0
#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);
4

1 回答 1

1

首先,我真的怀疑这是你得到的错误,因为它的格式不正确。也许你有一些谈论的东西std::basic_string<char, std::char_traits<char>, std::allocator<char> >,但编译器不太可能吐出你发布的内容,除非你有一些……有趣的……代码。将来,复制和粘贴正是因为专家可以从您认为不重要的细节中获取大量信息。如果您编辑不正确,您可能会严重误导 StackOverflow 用户,使他们更难帮助您。

现在,问题的最可能原因是您不知道编译步骤和链接步骤之间的区别。“未定义的引用”错误是链接器错误。

这意味着您的标头是正确的-您的代码可以编译,但是最后您没有将所有目标文件正确地放在一起-因此,输出g+ -c MigratingUser.cpp不包含在输出中g++ -c main.cpp(或您命名为“用法”的任何内容)代码)。

您可以一次性完成编译和链接(对于简单项目),如下所示:

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

这将同时编译和链接这两个文件。

于 2012-02-02T02:57:35.403 回答