我在訪問類中的靜態屬性時遇到問題。我收到以下錯誤:C++靜態屬性
shape.obj : error LNK2001: unresolved external symbol "public: static class TCollection<class Shape *> Shape::shapes"
類的定義是:
class Shape {
public:
static Collection<Shape*> shapes;
static void get_all_instances(Collection<Shape*> &list);
};
和靜態方法的實施:
void Shape::get_all_instances(Collection<Shape*> &list) {
list = Shape::shapes;
}
這似乎是shapes
屬性未被初始化。
感謝您的快速反饋。花了幾個小時來研究,並在StackOverflow上花了大約1分鐘。 – Louis 2010-10-24 07:56:30
我想你會非常後悔既有一個靜態變量以及有一個公共變量。你真的需要嗎?爲什麼不只是傳遞一個const Collection&object無論你需要什麼形式的列表?這將鼓勵其他開發人員在需要列表時調用Shape :: get_all_instances(),而不是顯式傳遞它。這會導致各種問題,當你想測試或者你想要在形狀的子列表上進行操作時。 –
2010-10-24 08:04:43
是的,因爲憤怒的調試,它現在是公開的。 – Louis 2010-10-24 08:14:21