Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二叉排序树赢得';不编译_C++ - Fatal编程技术网

C++ 二叉排序树赢得';不编译

C++ 二叉排序树赢得';不编译,c++,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 retu

我试图编写一个创建二叉树数据结构的程序,但我遇到了这些奇怪的编译器错误:

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;
}
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;
};
编辑:修复了.cpp文件上的错误消息和格式

  • 您不应该使用
    使用名称空间std
  • 您应该在
    BTNode.cpp
  • 您应该在
    BSTree.cpp
  • 您不应该使用
    使用名称空间std
  • 您应该在
    BTNode.cpp
  • 您应该在
    BSTree.cpp

  • 如果您声称产生此问题的文件确实是
    main.cpp
    (如问题中所示),那么为什么您的错误消息声称某个文件
    TreeHashTableDemo.cpp
    (不是此处显示的文件)是使用未定义符号的罪魁祸首?您在此处发布的内容正在发挥作用。如果树中确实有
    cpp
    文件,则需要将它们链接到主程序。我没有正确指示cpp文件,因此我已将它们添加到我的原始帖子中。但是我仍然得到了错误。如果这是您的全部代码,那么您应该在链接器错误之前得到一些编译错误。那么,您使用的是哪种编译器--以及--您使用的是IDE还是命令行?(假设您使用的是IDE,因为如果您使用的是命令行,那么问题就显而易见了)。您使用的是VS Code、gcc、clang吗?什么?如果您声称产生此问题的文件确实是main.cpp(如问题所示),为什么您的错误消息声称某个文件TreeHashTableDemo.cpp,它不是此处显示的文件,而是使用未定义符号的罪魁祸首?您在此处发布的内容起作用。如果树中确实有
    cpp
    文件,则需要将它们链接到主程序。我没有正确指示cpp文件,因此我已将它们添加到我的原始帖子中。但是我仍然得到了错误。如果这是您的全部代码,那么您应该在链接器错误之前得到一些编译错误。那么,您使用的是哪种编译器--以及--您使用的是IDE还是命令行?(假设您使用的是IDE,因为如果您使用的是命令行,那么问题就显而易见了)。你在使用VS代码、gcc、clang——什么?这修复了它,谢谢你请扩展你的答案和链接到一些stackoverflow页面(或)并扩展2和3为什么应该/必须这样做。这修复了它,谢谢你请扩展你的答案和链接到一些stackoverflow页面(或)并扩展2和3为什么应该/必须这样做。
    BSTree::BSTree()
    {
        m_root = NULL;
        m_size = 0;
    }
    void BSTree::add(int it)
    {
        m_root = new BTNode(it);
    }
    
    #include <cstdlib>
    using namespace std;
    class BTNode
    {
        public:
        BTNode(int);
        private:
        int m_data;
        BTNode* m_left;
        BTNode* m_right;
        BTNode* m_parent;
    };
    
    BTNode::BTNode(int data)
    {
        m_data = data;
        m_left = NULL;
        m_right = NULL;
        m_parent = NULL;
    }