我已将我的C ++项目从VS 2010升级到2015,并在编译时遇到一些问题。方法标题如下所示:
void CCodeGenerator::GenerateCode(const MachineExArray & AMachineExArray,
const MachineArrays & AMachineArrays,
std::ofstream & HeaderFile,
std::ofstream & SourceFile)
有一条线:
std::string HeaderDefine = path(OutputFilename).filename().generic_string();
for (std::string::iterator Iter = HeaderDefine.begin(); Iter != HeaderDefine.end(); Iter++)
*Iter = toupper((unsigned char)*Iter);
HeaderDefine = "__" + HeaderDefine + "_H__";
HeaderFile << "#ifndef " << HeaderDefine << "\n"; // <-- This one
编译器在此处停止并说:
没有操作员&#34;&lt;&lt;&#;匹配这些操作数。操作数类型是: std :: ofstream&lt;&lt; const char [9]
我很久以前就用C ++写过,但是从我记忆中来看,std::ofstream
非常自由,应该接受大多数简单类型作为输入。问题出在哪里?
当我开始写HeaderFile.
时,会立即将其标记为错误(红色下划线)并且评论说,&#34;不允许不完整的类型&#34;。
答案 0 :(得分:3)
对
的观察&#34;不允许使用不完整的类型&#34;
。错误。
#include <ostream>
int main()
{
std::ofstream HeaderFile;
}
也会出现此错误,而
#include <fstream>
int main()
{
std::ofstream HeaderFile;
}
在VS2015中编译。