[C++]「自分自身のクラス」へのキャスト関数?
Q&A
Closed
class Base {
public:
Base& procA();
template<typename T> T castTo();
};
class Derived : public Base {
public:
Derived& procB();
};
void main() {
Base()
.castTo<Derived>()
.procA()
.procB(); // エラー: No member named 'procB' in 'Base'
}
こういう感じでメソッドチェーンみたいなことをしたい時に、procAがBaseクラスのインスタンスを返すためにprocBが呼べない。
procAが、Baseクラスから呼んだときはBaseクラスのインスタンスを、Derivedクラスから呼んだときはDerivedクラスのインスタンスを返すようにできないだろうか。
(もしくは他の方法でも、このmain関数が動くようになればそれで良い)
ちなみにDerivedクラスでもprocAメソッドを宣言及び実装すればもちろん動くことは動くのだが、メソッドや派生クラスが増えるたびに記述量が膨れ上がっていくのを問題に感じている。
できればBaseクラスをいじるだけで完結したい。
と、自分で整理しつつ書いていると、なかなか望み薄な感じもしてきたんですが、何かヒントをお持ちの方がいれば教えていただきたいです〜。
0