C ++ Простая ошибка компиляции - PullRequest
1 голос
/ 12 февраля 2012

У меня проблема с компиляцией.

  • У меня есть один класс
  • У меня есть один заголовочный файл
  • И, конечно, 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()'

Не могли бы вы, ребята, помочь мне понять, что там не так?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Вам нужен #include <string> в заголовочном файле.

Кроме того, для хорошей практики сохраните using namespace s в своих файлах .cpp, если таковые имеются.

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

Вы скомпилировали, не сообщая компилятору о Agent.cpp. То есть вам нужно что-то вроде этого, для g ++:

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