对c ++中定义函数的未定义引用?

时间:2016-04-25 23:18:53

标签: c++ compilation compiler-errors g++

我对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 ++编译时出现此错误:

$ 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构建,但它没用。

谢谢!

1 个答案:

答案 0 :(得分:3)

您的.cpp文件应如下所示:

#include "RootNode.h"

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

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