基本クラスへのポインターを介してアクセスされるいくつかの派生クラスを持つアプリケーションを作成しています。これらの派生クラスの 1 つに、次のように、アプリケーション内の隣接する (基本クラス型の) ポインターのベクトルを含めることを望みます。
#include <vector>
class BaseClass
{
public:
BaseClass() { }
virtual ~BaseClass() { }
};
class DerivedClass : virtual public BaseClass
{
public:
DerivedClass() : BaseClass() { }
~DerivedClass() { }
private:
vector<BaseClass*> Neighbors;
};
ただし、次のコンパイラ エラーが発生します。
example.cpp:16: error: ISO C++ forbids declaration of ‘vector’ with no type
example.cpp:16: error: expected ‘;’ before ‘<’ token
これは可能ですか?可能であれば、誰かが私の間違いを指摘してください! コンパイラは、宣言されたばかりの BaseClass の型を認識している必要があります。実際、型のメンバーの宣言はBaseClass Foo;
機能するため、ベクトルが BaseClass* を認識できない理由がわかりません。
乾杯!