クラスへのポインタを指定して、実装をラップしている別のクラスにキャストする方法を dynamic_cast<>() に指示できるように、C++でクラスを構築する方法はありますか? オペレーターキャストはトリックを行いますか? Abstract インターフェース基本クラスがあり、concreteB だけでなく、これから concreteA を派生させますが、concreteB は、concreteA 型のオブジェクトへのインターフェースをラップします。もし私がconcreteAからconcreteAにキャストするリクエストを受け取ったら、私はそれを動作させたいと思います:
class Abstract {
public:
virtual void interface() = 0;
};
class concreteA : public Abstract {
public:
virtual void interface();
};
class concreteB : public Abstract {
public:
concreteB(concreteA &underlying)
: _underlying(&underlying) {
}
virtual void interface();
operator concreteA*() {
return _underlying;
}
private:
concreteA *_underlying;
};
void
myTest() {
concreteA myClassA;
concreteB myClassB(myClassA);
Abstract *abstract = &myClassB;
concreteA *underlying = dynamic_cast<concreteA *>(abstract);
}