неопределенная ссылка на существующий класс - PullRequest
0 голосов
/ 02 февраля 2012
#ifndef MIGRATINGUSER_H
#define MIGRATINGUSER_H
#include <iostream>
using namespace std;

class MigratingUser
{
        public:
        void populateUidAndGuid(string line);
        private:
        string uid;
        string guid; 
};
#endif

это определение заголовка и ниже - определение cpp:

#include "MigratingUser.h"
using namespace std;

void MigratingUser::populateUidAndGuid(string line)
{
  //get the uid and guid
}

и это ошибка, которую я получаю. как я могу решить это:

undefined reference to MigratingUser::populateUidAndGuid(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'

для полноты вот как я использую класс:

MigratingUser muser;

muser.populateUidAndGuid(temp);

1 Ответ

1 голос
/ 02 февраля 2012

Прежде всего, я действительно сомневаюсь, что вы получаете ошибку, потому что она не отформатирована правильно. Возможно, вы получили что-то, о чем говорилось std::basic_string<char, std::char_traits<char>, std::allocator<char> >, но вряд ли компилятор выплюнул бы то, что вы опубликовали, если у вас не было ... интересного ... кода. В будущем скопируйте и вставьте точно , потому что эксперты могут получить удивительно большой объем информации из деталей, которые вы не считаете важными. И вы можете сильно ввести в заблуждение пользователей StackOverflow, если внесете неправильные изменения, и им будет намного сложнее помочь вам.

Теперь наиболее вероятной причиной вашей проблемы является то, что вы не знаете о разнице между шагом compile и шагом link . Эта ошибка «неопределенная ссылка» является компоновщиком ошибка.

Это означает, что с вашими заголовками все в порядке - ваш код компилируется, но в конце вы неправильно собрали все объектные файлы, поэтому вывод g+ -c MigratingUser.cpp не был включен в вывод g++ -c main.cpp (или как вы назвали код «использования»).

Вы можете сделать компиляцию и ссылку за один раз (для простых проектов) следующим образом:

g++ -o my_executable MigratingUser.cpp main.cpp

Это скомпилирует и свяжет два файла вместе .

...