LNK2019未解析的外部符号。创建二叉树

时间:2014-01-12 21:49:52

标签: c++ data-structures compiler-errors binary-tree lnk2019

我创建了链接列表,它没有问题并运行。另外,我必须包括二叉树。它给了我这个错误

1> Generating Code... 1> Skipping... (no relevant changes detected) 1> main.cpp 1>main.obj : error LNK2019: unresolved external symbol "public: int __thiscall SDI::BinaryTree::insert(int)" (?insert@BinaryTree@SDI@@QAEHH@Z) referenced in function _main 1>main.obj : error LNK2019: unresolved external symbol "public: int __thiscall SDI::BinaryTree::preOrder(void)" (?preOrder@BinaryTree@SDI@@QAEHXZ) referenced in function _main 1>C:\Users\Muugii\Documents\Visual Studio 2013\LinkedList\Debug\LinkedList.exe : fatal error LNK1120: 2 unresolved externals ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

BinaryTree.h

  

ifndef SDI_BINARYTREE

     

定义SDI_BINARYTREE

包括

namespace SDI
{
    class BinaryTree
    {
        class BTNode
        {
        public:
            int data;
            BTNode *left;
            BTNode *right;
        };

    public:
        BinaryTree();
        ~BinaryTree();

        int insert(const int value);
        int preOrder() const;
        int clearTree();

    private:

        BTNode *headPtr;

        int insert(const int value, BTNode *leaf);
        int clearTree(BTNode *leaf) const;
        int preOrder(BTNode *leaf) const;

    };
};

#endif

BinaryTree.cpp

#include"BinaryTree.h"
#include <iostream>

using namespace std;


SDI::BinaryTree::BinaryTree()
{
    headPtr = nullptr;
}

SDI::BinaryTree::~BinaryTree()
{
    //clearTree(headPtr);
}

int SDI::BinaryTree::insert(const int value, BTNode *leaf)
{
    if (value < leaf->data)
    {
        if (leaf->left != nullptr)
        {
            insert(value, leaf->left);
        }
        else
        {
            leaf->left = new BTNode;
            leaf->left->data = value;
            leaf->left->left = nullptr;
            leaf->left->right = nullptr;
        }
    }
    else if (value >= leaf->data)
    {
        if (leaf->right != nullptr)
        {
            insert(value, leaf->right);
        }
        else
        {
            leaf->right = new BTNode;
            leaf->right->data = value;
            leaf->right->left = nullptr;
            leaf->right->right = nullptr;
        }
    }
    return 1;
}

Main.cpp的

#include <string>
#include <iostream>
#include "Linkedlist.h"
#include "BinaryTree.h"

using namespace std;

int main( int argc, const char *argv[])
{

    SDI::LinkedList myList;
    //SDI::BinaryTree myTree;
    int inp;

....

if (inp2 == 'a')
                {
                    int num;

                        cout << "\nPlease enter a value to add: ";
                        cin >> num;
                        myTree.insert(num);
                        cout << "\n\t\tValue has been successfully saved\n\n\n";


                }

我试过在线查找,找不到任何内容。这将是很大的帮助。

2 个答案:

答案 0 :(得分:0)

错误消息的哪一部分不清楚?它清楚地表明您没有实现两种方法:

int SDI::BinaryTree::insert(const int value) {
    return 0; // the implementation probably needs some patching up
}
int SDI::BinaryTree::preOrder() const {
    return 0; // as does this one
}

答案 1 :(得分:0)

我看到你有两个名为insert的函数。而第一个

int insert(const int value);

仅被宣布但未定义。