【发布时间】:2012-02-12 19:06:53
【问题描述】:
我遇到了编译问题。
- 我有一个班级
- 我有一个头文件
- 当然还有 Main 来测试我的工作。
但是我得到了编译错误,这超出了我的理解,我做错了什么。
头文件:
#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()'
你们能帮我理解那里有什么问题吗?
【问题讨论】:
-
这不是编译器错误。这是一个链接器错误。您的最终链接器调用必须缺少所需的目标文件之一。
-
这不是编译器错误,肯定不是“奇怪”,这与C无关。
-
main 没有 17 行。你能重新编译或显示你使用的真实代码吗?
-
不相关:因为
name没有分配给new,所以你不需要delete它。Agent的析构函数应该是空的。 -
你不能删除这个->名字。它不是指针。
标签: c++ compilation header