の禁止事項を理解する
抽象クラスの問題
回避策
抽象クラスへのポインターのベクトル:
std::vector<IFunnyInterface*> ifVec;の代わりに抽象クラスの std::vector を宣言すると、抽象クラスへのポインターの std::vector を使用できます。これにより、ポリモーフィックな動作を維持しながら子クラスのインスタンスを保存できます。
派生クラス ベクトル:
class FunnyDerived : public IFunnyInterface { // Implement abstract function }; std::vector<FunnyDerived> fdVec;抽象クラスを使用する代わりに、抽象クラスを継承し、そのすべての仮想関数の具体的な実装を提供する派生クラスを作成できます。その後、この派生クラスの std::vector を宣言できます。
結論
std::vector の作成を制限するのは直感に反するように思えるかもしれませんが、抽象クラスの中でも、オブジェクト指向プログラミングの基本的な側面です。抽象クラスまたは派生クラスへのポインターの使用を採用することで、抽象クラスの制限を守りながら柔軟性とポリモーフィズムを維持できます。以上が抽象クラスの `std::vector` を作成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。