C ++简单的编译错误

时间:2012-02-12 19:06:53

标签: c++ compilation header

我遇到了编译问题。

  • 我有一个班级
  • 我有一个头文件
  • 当然主要是测试我的工作。

但是我收到编译错误,我的理解是我做错了。

标题文件:

#ifndef AGENT_H
#define AGENT_H

using namespace std;

class Agent
{
public:
    Agent(string);
    virtual ~Agent();
    private:
    string name;
};

#endif  /* AGENT_H */

代理类(Agent.cpp)

#include "Agent.h"

using namespace std;
Agent::Agent(string _name)
{
   this->name = _name;
}

Agent::~Agent()
{
    delete this->name;
}

我的主要:

 #include <cstdlib>
 #include <iostream>

#include "Agent.h"
using namespace std;


int main(int argc, char** argv) 
{
    Agent agent1("Danila"); 
    return 0;
}

所以我得到了这样一个奇怪的错误:

undefined reference to `Agent::Agent(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/main.cpp:17: undefined reference to `Agent::~Agent()'
/main.cpp:17: undefined reference to `Agent::~Agent()'

你们能帮助我理解那里的错误吗?

2 个答案:

答案 0 :(得分:2)

您的标头文件中需要#include <string>

另外,为了更好的做法,请将using namespace保留在.cpp文件中,如果有的话。

答案 1 :(得分:1)

您编译时没有告诉编译器Agent.cpp。即你需要这样的东西,对于g ++:

$ g++ main.cpp Agent.cpp -o myprogram