Я обновил свой проект на C++ с VS 2010 до 2015 года и у вас есть некоторые проблемы с его компиляцией. Заголовок метода выглядит следующим образом:std :: ofstream не принимает const char * for << operator
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
Компилятор останавливается здесь и говорит:
Нет оператора "< <" не соответствует этим операнды. Типы операндов являются: станд :: ofstream < < Const символ [9]
я написал в C++ давно, но от того, что я помню, std::ofstream
довольно либеральны и должен принимать наиболее простых типов в качестве входных данных. Где проблема?
Когда, в начале я пишу HeaderFile.
, он сразу же помечается как ошибка (красный подчеркивание) и комментарий говорит, «Неполные типы не допускаются».
Что такое 'HeaderDefine'? – Bathsheba
HeaderDefine - std :: string. – Spook
Юмор меня на мгновение и замените 'HeaderDefine' на' HeaderDefine.c_str() ', а затем посмотрите, изменится ли ошибка компиляции на что-то более ясное. – Bathsheba