Search code examples
c++data-structurescompiler-errorsbinary-treelnk2019

LNK2019 unresolved external symbol. Creating Binary Tree


I created Linked list and it has no problem and runs. Plus i have to include Binary Tree. and its giving me this error

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

define SDI_BINARYTREE

include

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";


                }

I have tried looking up online, couldn't find any. It would be great help.


Solution

  • As I see you have two functions with name insert. And the first one

    int insert(const int value);
    

    was only declared but not defined.