#c
#c
Вопрос:
Когда я пытаюсь прочитать файл с помощью функции
void readFile(string fileName, string* anArray) {
unsigned int lineCounter = 0;
ifstream inFile = ifstream(fileName);
while (!inFile.eof()) {
string fileLine;
inFile >> fileLine;
if (!fileLine.empty()) {
anArray[lineCounter] = fileLine;
lineCounter;
}
}
inFile.close();
}
Я получаю приведенную ниже ошибку, которая, как я полагаю, связана с указателем на массив строк?
1>Main.obj : ошибка LNK2019: неразрешенный внешний символ «void __cdecl resource::ReadFile(класс std::basic_string,класс std::allocator >,класс std::basic_string, класс std::allocator > *)» (?ReadFile@resource@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAV23@@Z) ссылается в функции _main
Комментарии:
1. Уверен, что это не полная ошибка.
2. ибп.. обновление, входящее
3. Он жалуется на невозможность найти определение
resource::readFile
. В каком исходном файле он определен и ссылаетесь ли вы на него?4.
readFile
Предполагается, что это функция-член, определенная вне классаresource
? Если это так, вы, вероятно, имели в видуvoid resource::readFile(...) {
.5. Да, да, боже, я пропустил эту часть…
Ответ №1:
void readFile(string fileName, string* anArray) {
Это определение функции-члена, но вы забыли написать имя класса.
void resource::readFile(string fileName, string* anArray) {
Как у вас есть сейчас, вы определили новую функцию в глобальном пространстве имен, которая не имеет ничего общего с resource
, поэтому при main
попытке использования resource::readFile
определение не может быть найдено.
Комментарии:
1. @Xerath: Ну, компьютеры не могут догадаться, что вы хотели написать, но не написали!