我来自Perl和Python,是一个完全的C++初学者,所以请宽容我。 我有这一点代码,过去可以工作,但稍加修改就不再工作了。 把我难倒了。 抱歉,没有更小的例子,但我无法在更小的规模上复制它(如果我可以的话,我可能知道问题出在哪里……)
我试图从结构cPlane创建一个实例向量。
void fFileReadin (vector<cPlane>& vPlanes, string sInputFile) {
ifstream f;
string s;
vector<cPlane> vPPP;
f.open(sInputFile.c_str(), ios::in);
if ( f.good() ) {
cout << "file found!!";
do
{
getline(f,s);
if ( s.size() > 0 ) {
cout << "Stringy:" << s << endl;
vector<string> vAtLine = psplit(s);
cout << "Whole string:" << s << endl;
cout << "Element 2:" << vAtLine[1] << endl;
cPlane FluFlu;
FluFlu.name = vAtLine[0];
FluFlu.maker = vAtLine[1];
FluFlu.engines = stoi(vAtLine[2]);
FluFlu.pax = stoi(vAtLine[3]);
FluFlu.consume = stoi(vAtLine[4]);
cout << "Pax:" << FluFlu.pax << endl;
vPlanes.push_back(FluFLu); // <-- This is line 39
vPPP.push_back(FluFlu);
}
}
while (!f.eof() ) ;
f.close();
}
}
它读取一个文本文件,解析每一行,在逗号上拆分并提取内容以将它们分配给结构,在一个向量中列出结构,在main.cpp中再次访问该向量。 大部分都很好用。 但是如果我运行这个,当它应该将实例FluFlu推入向量vPlanes时,编译器抛出
错误:未在此作用域中声明“FluFLu”。。。。vplanes.push_back(FluFLu);^~~~~~~FileRead.cpp:39:35:
注:建议的替代方案:“Fluflu”
如果我对这行进行注释,它可以正常工作。 所以当这一行存在时,FluFlu不在这个范围内定义,但是当我移除这一行时,在下一行中找到FluFlu并将其推入另一个载体是没有问题的。 所以我想可能是引用的问题,但是下面的代码:
void fFileReadin (vector<cPlane>& vPlanes, string sInputFile) {
cPlane AceofSpades;
AceofSpades.engines=11;
AceofSpades.maker="A";
AceofSpades.pax=112;
vPlanes.push_back(AceofSpades);
AceofSpades.engines=5;
AceofSpades.maker="TTT";
AceofSpades.pax=33;
vPlanes.push_back(AceofSpades);
}
工作也很好。。。 我看不出这里的范围有什么不同。。。 如有任何帮助,我们将不胜感激。
编译器正告诉你这里的错误所在,你有错失键入的第39行,flufl
和flufl
是不同的东西,flufl
确实不存在。 在C++中,名称是区分大小写的。