我有一些問題需要聲明std::vector<std::string>
類型的靜態成員,原則上我可以用一個數組std::string[]
替換它。如何聲明一個靜態向量成員
我有很多麻煩:如果我聲明它爲static
,然後我在實現(cpp文件)初始化它的作品,但如果我想創建一個新的類繼承自第一個文件它抱怨約
error: invalid application of ‘sizeof’ to incomplete type ‘std::string []’
如果我decalre它在頭我有雙重聲明的問題。
什麼是正確的方法?我必須使用extern嗎?怎麼樣?
我有:
file_A.h:
class A { public: static string s[]; }
file_A.cpp:
string A::s[] = { ... };
file_B.h
class B : public A
file_B.cpp
void B::function()
{
for (string* s = A::s; s != A::s + sizeof(A::s)/sizeof(string); ++s)
}
'std :: vector'不是函數類型。這是一個班級類型。 –
它怎麼抱怨?這真的是你file_B.h中的所有內容嗎? – PlasmaHH
第一個應該可以正常工作。你遇到了什麼錯誤?什麼編譯器? – 2012-11-01 12:54:48