[英]Vector of pointers to base class within a derived class
我正在編寫一個應用程序,我將通過指向基類的指針訪問幾個派生類。 我希望這些派生類中的一個包含一個指針向量,它是應用程序中的鄰居(也是基類類型),如下所示:
#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 Foo;
工作,所以我不明白為什么矢量無法識別BaseClass *。
干杯!
你沒有using namespace std;
, using std::vector
或std::vector<...>...
#include <vector>
using std::vector; //choice 1
using namespace std; //choice 2
class BaseClass
{
public:
BaseClass() { }
virtual ~BaseClass() { }
};
class DerivedClass : virtual public BaseClass
{
public:
DerivedClass() : BaseClass() { }
~DerivedClass() { }
private:
std::vector<BaseClass*> Neighbors; //choice 3
};
打算對答案#1發表評論:你應該避免在頭文件中使用“使用...”聲明。 將它們保存在實現文件(.cpp)中。 Google的樣式指南提供了原始海報和答案人可能會發現有用的一些其他信息: http : //google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces 。 我不認可谷歌風格作為一個整體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.