2013-02-11 2 views
3

Я предполагаю, что это имеет какое-то отношение к #includes, но это мой первый попыток использовать их, чтобы я немного потерялся. Я просто задавался вопросом, может ли кто-нибудь сразу сказать, была ли очевидная ошибка.Почему я получаю эту ошибку: ожидается ')' перед '&' токеном?

/** @file Translator.cpp */ 

#include <fstream> 
#include "Translator.h" 
#include <vector> 

Translator(std::ifstream& fin) //error appears on this line 
{ 
    T1(fin); 
    T1.createTable(fin); 
    T2(fin); 
    T2.createTable(fin)); 
    string temp; 
    while(!fin.eof()) 
    { 
    fin >> temp; 
    message.push_back(temp); 
    } 
} 

Спасибо за ваше время.

+1

Также у вас есть дополнительный парс в 'T2.createTable (fin));' –

+2

Также ваш цикл должен быть 'while (fin >> temp) message.push_back (temp);', а не 'while (! Fin. EOF()) '. –

+0

Спасибо Сет. Разве эти две петли не делают то же самое? В чем разница? – woodenToaster

ответ

6

Трудно ответить на этот вопрос точно не видя заголовок, но если это функция, вам нужно добавить тип возвращаемого void для определения вашей функции:

void Translator(std::ifstream& fin) { 
    ... 
} 

Если это конструктор, необходимо обеспечить его полное имя:

Translator::Translator(std::ifstream& fin) { 
    ... 
} 
+1

Он должен быть параметризованным конструктором. Я думал, что у них нет типа возврата. – woodenToaster

+0

@ ChrisHogan Отредактировано, спасибо! – dasblinkenlight

+0

Я думаю, проблема идет намного глубже, чем я думал, потому что, когда я пытаюсь использовать Translator :: Translator (.. и т. Д.), Я получаю только 20 ошибок, а не только одну. – woodenToaster

0

Без декларации Translator это немного трудно сказать, но если это означало быть конструктор, то он должен быть Translator::Translator(std::ifstream& fin). Если он предназначен для метода, то он должен иметь тип возвращаемого типа, например, void Translator(std::ifstream& fin).

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