2012-02-12 20 views
1

コンパイルの問題があります。C++単純なコンパイルエラー

  • 私は私が私の仕事をテストするために、1つのヘッダファイル
  • そしてもちろんメインのを持っている1級
  • を持っています。

コンパイルエラーが発生していますが、私が間違っていることを理解していません。

ヘッダーファイル:

#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()' 

あなたは私に何が間違っているのか理解してもらえますか?

+0

なぜこのタグは "C"ですか? –

+1

これはコンパイラエラーではありません。 **リンカエラー**です。最終的なリンカ呼び出しには、必要なオブジェクトファイルの1つが欠落している必要があります。 –

+1

これはコンパイラエラーではなく、確かに "奇妙な"ものではなく、これはCとは関係ありません。 –

答えて

2

ヘッダーファイルに#include <string>が必要です。

また、良い例として、using namespaceを.cppファイルに保存してください(存在する場合)。

+4

以上で、 'using namespace'をまったく使わないでください。 –

+1

同じエラーです。エージェントエージェント1( "Danila")の 'Agent :: Agent(std :: basic_string 、std :: allocator > –

+0

その場合は、エージェントが結果の実行可能ファイルにリンクされていない可能性があります(他の回答の1つと同様です)。おそらくエージェントのエラーを捕まえなかったのかもしれません。あなたは設定オプションを見なければならないでしょう。 Agent.h/cppは同じNetbeansプロジェクトの一部ですか?それらはビルドに含まれているとマークされていますか?残念ながら、私はC++用のNetbeansを使用していませんが、私はここでVisual Studioについて知っていることを適用しようとしています。 – Pochi

1

コンパイラにAgent.cppを知らせずにコンパイルしました。私。あなたはg ++のためにこれが必要です:

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

NetBeansを使用していますが、そこで実行できますか? –

+0

@ WildGoat他のIDEの経験に基づいて、スムーズにコンパイルするには、「ファイルの追加」メニューオプションなどを使ってファイルを追加する必要があります。さもなければ、IDEは 'Agent.cpp'について知らず、それを生成するMakefileに入れません。代わりに、編集するのが簡単なプロジェクトファイルがあるかもしれません - それは 'source'セクションを持ちます。最後の手段として、直接生成するコンパイラコマンドを手動で編集できる必要がありますが、これが必要であるかどうかは疑問です。 –

+0

Netbeansは新しいクラスを追加すると思っていましたが、Makefileで何も変更されていないことがわかりましたので、makefileに何を追加して正常に動作させるべきですか? –