私は(要約)のように、戻り引数として純粋ADTを使用したいと思います。その後、純抽象データ型をリターンとして使用するか?
class PADT {
public:
virtual ADT func() = 0;
virtual int iFun() = 0;
}
class X : PADT {
public:
virtual PADT func() { return X(); }
virtual int iFun() { return 1; }
}
Class Y : PADT {
public:
virtual PADT func() { return Y(); }
virtual int iFun() { return 2; }
}
そして、どのように私はそれを使うだろうか?
C++は、このように動作しません。おそらく 'std :: shared_ptr'と動的スコープのオブジェクトを使う必要があります。 –
値で仮想タイプを返すことはできませんが、仮想メソッドが機能することは期待できます。クラスが抽象クラスであるという事実は、基本クラスに "合理的な"デフォルト実装がないので、 'X'または' Y'の割り当てられたインスタンスへのポインタを返すことができます。 PADT * 'おそらく' std :: shared_ptr'や 'std :: unique_ptr'を使い、寿命管理を簡素化したいでしょう。 –