Pau*_*ams 0 c++ arrays constants
这是我所拥有的(不工作)的简化版本:
prog.h:
...
const string c_strExample1 = "ex1";
const string c_strExample2 = "ex2";
const string c_astrExamples[] = {c_strExample1, c_strExample2};
...
Run Code Online (Sandbox Code Playgroud)
prog.cpp:
...
int main()
{
int nLength = c_astrExamples.length();
for (int i = 0; i < nLength; i++)
cout << c_astrExamples[i] << "\n";
return 0;
}
...
Run Code Online (Sandbox Code Playgroud)
当我尝试构建时,我收到以下错误:错误C2228:'.length'的左边必须有class/struct/union
仅当我尝试使用c_astrExamples的成员函数时才会发生此错误.如果我用数字2替换"c_astrExamples.length()",一切似乎都能正常工作.
我能够使用c_strExample1和c_strExample2的成员函数,所以我认为这种行为源于我使用字符串与字符串数组之间的一些区别.
我在prog.h中的初始化是错误的吗?在prog.cpp中我需要一些特别的东西吗?
C++中的数组没有成员函数.你应该像vector<string>你想要一个对象一样使用一个集合,或者像这样计算长度:
int nLength = sizeof(c_astrExamples)/sizeof(c_astrExamples[0]);
Run Code Online (Sandbox Code Playgroud)