私は悪名高いコードをいくつか継承し、私の人生をさらに複雑にするサードパーティのライブラリを受け取ったときに幸運に恵まれました. これが私が最終的に得たものです。
class Something; // third party library
namespace Something {
class Something;
class Templated<class TemplateClass>;
}
ここで、サード パーティ ライブラリのクラス「Something」を、名前空間 Something の下の新しいクラスの TemplateClass パラメーターとして使用する必要があります。これはうまくいくはずだと思った
class Something; // third party library
namespace Something {
class Something;
class Templated<class TemplateClass>;
class Impl : public Templated< ::Something > {}
}
しかし、コンパイラはそれを好まない。コンパイルする唯一の方法は
class Something; // third party library
class Something2 : public Something {} // dirty hack
namespace Something {
class Something;
class Templated<class TemplateClass>;
class Impl : public Templated< Something2 > {}
}
しかし、私はそれがあまり好きではありません。これを行うためのより良い方法があるはずです。