C++相談室 part83
■ このスレッドは過去ログ倉庫に格納されています
0008デフォルトの名無しさん
2010/08/05(木) 08:31:51aho.cxx:12: error: cannot dynamic_cast ‘this’ (of type ‘const class Base* const’) to type ‘const class Derived* const’ (source type is not polymorphic)
と出ます。基底クラス内で、thisをアップキャストすることは不可能でしょうか。
実際にはDerived1やDerived2のような継承クラスがいくつかあり、Baseは抽象クラスです。
Base::Foo()は、どのクラスに継承されたかを調べるメソッドです。
Fooをそれぞれのクラスでオーバーライドするべき、というのは理解した上での質問です。
class Derived;
class Base {
public:
int Foo() const;
};
class Derived : public Base {
};
int Base::Foo() const {
const Derived* const p = dynamic_cast<const Derived* const>(this);
if(p){
return 1;
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています