二进制排序树无法编译

时间:2018-11-05 06:55:13

标签: c++

我正在尝试编写一个创建二叉树数据结构的程序,但出现了这些奇怪的编译器错误:

main.o:main.cpp:(.text+0x15): undefined reference to `BSTree::BSTree()'
main.o:main.cpp:(.text+0x15): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `BSTree::BSTree()'
collect2: error: ld returned 1 exit status

我对这种编译器错误没有任何经验,也无法弄清楚到底是什么错误。据我所知,我已经为其他编译良好的项目编写了类似的代码。

这是我的代码:

main.cpp

#include <iostream>
#include <cstdlib>
#include "BSTree.h"
using namespace std;
int main()
{
    BSTree treeValues;
    return 0;
}

BSTree.h

#include <cstdlib>
#include "BTNode.h"
using namespace std;
class BSTree
{
    public:
    BSTree();
    void add(int);
    private:
    BTNode* m_root;
    int m_size;
};

BSTree.cpp

BSTree::BSTree()
{
    m_root = NULL;
    m_size = 0;
}
void BSTree::add(int it)
{
    m_root = new BTNode(it);
}

BTNode.h

#include <cstdlib>
using namespace std;
class BTNode
{
    public:
    BTNode(int);
    private:
    int m_data;
    BTNode* m_left;
    BTNode* m_right;
    BTNode* m_parent;
};

BTNode.cpp

BTNode::BTNode(int data)
{
    m_data = data;
    m_left = NULL;
    m_right = NULL;
    m_parent = NULL;
}

编辑:.cpp文件中的固定错误消息和格式

1 个答案:

答案 0 :(得分:2)

  1. 您不应在头文件中使用using namespace std;
  2. 您应在#include "BTNode.h"中添加BTNode.cpp
  3. 您应在#include "BSTree.h"中添加BSTree.cpp