2010-09-05 4 views
0

Я пытаюсь напечатать в файл в C++ и по какой-то причине, я получаю эту странную ошибку:непризнанным типа при вызове функции

error C2061: syntax error : identifier 'ofstream'

Я включил следующие:

#include <fstream> 
#include <iostream> 

Этот является моей функцией:

void Date::PrintDate(ofstream& resultFile) const 
{ 
    resultFile << m_day << "/" << m_month << "/" << m_year; 
} 

Я using namespace std.


Я понял, это было все, потому что я не включил файл в правильный путь.

+1

Если пространство имен не является вашей проблемой, отправьте полный пример (файл), который воспроизводит проблему. – dyp

+0

Файл пуст 1, который я создаю и ничего не содержит ... я получил ошибки и не могу скомпилировать его –

+0

Я думаю, вы имеете в виду «непризнанный» в названии. :) – Alerty

ответ

3

Использование std::ofstream

Это потому, что мы должны явно указать, какие ofstream мы говорим. Так как стандартное пространство имен std содержит имя ofstream, оно должно быть явно сказано компилятором

Существуют два основных способа:

Просто, прежде чем все включаемые файлы в файле .cpp, имеют используя директиву

1: using namespace std;

или

2: префикс каждое имя из пространства имен станд с std::

EDIT 2:

исправленные объявление функции должно выглядеть следующим образом, как вариант 1 (сверху) является предпочтительным способом, чтобы избежать глобального загрязнения пространства имен обычно

void Date::PrintDate(std::ofstream& resultFile) const 
{ 
    resultFile << m_day << "/" << m_month << "/" << m_year; 
} 
+0

void Date :: PrintDate (std :: ofstream & resultFile) или вставить строку с использованием пространства имен std после того, как включает (и ищет пространства имен) – dyp

+0

@ Надав: вы можете либо добавить 'using namespace std;' сразу после '# include', либо использовать полное имя' std :: ofstream' каждый раз, когда вы используете 'ofstream'. – casablanca

+0

Я уже использую пространство имен std и, похоже, это не моя проблема. –

0

Thinking Я схожу с ума , Я попытался скомпилировать модифицированную/упрощенную версию, и она отлично работает. Вы уверены, что используете компилятор C++, а не компилятор C? например g ++ вместо gcc.

#include <iostream> 
#include <fstream> 

using namespace std; 

void printDate(ofstream& resultFile) 
{ 
resultFile << 1 << "/" << 1 << "/" << 2010; 
} 

int main(int arg, char **argv) 
{ 
ofstream ofs("ADate.txt"); 
if (!ofs) cerr << "huh?"; 
printDate(ofs); 
} 
+0

Я использую визуальную студию 10 proffesional версии, и я использую файлы cpp ofc –

0

проблема была с порядком включенных файлов «Н» Я не включают в правильном порядке после устранения все это работало отлично.

+0

Не могли бы вы сообщить нам, что именно было? Каков был старый порядок и каков был новый порядок? – Chubsdad

Смежные вопросы