2016-04-25 37 views
2

私は非常に新しいC + +ので​​、私はこれのためにいくつかの助けが必要になります。ここでは、コードです:私はグラムでコンパイルしようとするとC++で定義された関数への未定義参照?

RootNode.h

#ifndef ROOTNODE_H 
#define ROOTNODE_H 


class RootNode 
{ 
    public: 

     int getNodeId(); 
     void setNodeId(int i); 

    protected: 
    private: 
     int node_id; 
}; 

#endif // ROOTNODE_H 

RootNode.cpp

class RootNode{ 
    private: 
     int node_id; 

RootNode() 
{ 
    //ctor 
    this->setNodeId(0); 
} 

void setNodeId(int i){ 
    node_id = i; 
} 

int getNodeId(){ 
    return node_id; 
} 

~RootNode() 
{ 
    //dtor 
} 

}; 

main.cppに

#include <stdio.h> 
#include <iostream> 
#include "LeafNode.h" 
#include "DecisionNode.h" 
#include "RootNode.h" 
using namespace std; 


int main(int argc, const char* argv[]){ 
     RootNode rootNode; 
     cout<<rootNode.getNodeId(); 




return 0; 
}; 

私はこのエラーを取得する++ :

$ g++ RootNode.cpp main.cpp 
/tmp/ccylUcLS.o: In function `main': 
main.cpp:(.text+0x17): undefined reference to `RootNode::getNodeId()' 
collect2: error: ld returned 1 exit status 

私はオンラインで見ましたが、何がうまくいかないのか分かりません。私はCodeBlocksを使ってビルドしようとしましたが、それは無駄です。

ありがとうございました!

答えて

3

あなた.cppファイルは次のようになります。

#include "RootNode.h" 

int RootNode::getNodeId() 
{ 
// stuff 
} 

void RootNode::setNodeId(int i) 
{ 
// stuff 
} 
+0

をそして、それはおそらくrootnode.hがいけない#includeする必要がありますか? – kfsone

+0

間違いなく。私はそれを追加します –

+1

あなたは 'class RootNode'定義を今必要としません - それはRootNode.hから来ています – kfsone

関連する問題