我在声明类型的静态成员时遇到了一些问题std::vector<std::string>
,原则上我可以用数组替换它std::string[]
。
我有很多麻烦:如果我将它声明为static
然后我在实现(cpp 文件)中初始化它可以工作,但是如果我想创建一个从第二个文件中的第一个继承的新类,它会抱怨
error: invalid application of ‘sizeof’ to incomplete type ‘std::string []’
如果我在标题中标明它,我会遇到双重声明的问题。
什么是正确的方法?我必须使用外部吗?如何?
我有:
文件_A.h:
class A { public: static string s[]; }
文件_A.cpp:
string A::s[] = { ... };
文件_B.h
class B : public A
文件_B.cpp
void B::function()
{
for (string* s = A::s; s != A::s + sizeof(A::s) / sizeof(string); ++s)
}