这个LNK2005错误来自BST代码

时间:2016-10-10 00:43:51

标签: c++ binary-search-tree linker-errors lnk2005

我正在研究一个基本的BST项目供我自己参考。我有三个文件:BST.h,BST.cpp和main.cpp。

在BST.h内部看起来像这样:

#pragma once
class BST {
private:
    struct node {
        int key; int data; node* left; node* right };
    node* root;
    node* CreateLeaf(int key, int data);
    void AddLeafPrivate(int key, int data, node* newNode);
    void PrintInOrderPrivate(node* nodePtr);
public:
    BST();
    void AddLeaf(int key, int data);
    void PrintInOrder();
};

在BST.cpp中,我有所有这些函数的正式定义等等......一个例子是:

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include "BST.h"

using namespace std;

BST::BST() {
    root = NULL;
}

main.cpp文件当前为空。它只有include和main()返回0。

当我尝试构建这个解决方案时,我为每个创建的函数都会出现LNK2005错误,这些错误似乎在我完成PrintInOrderPrivate定义的代码之后才会发生。我知道LNK2005通常是由跨文件的多个函数定义引起的,但我没有在BST.h中定义任何内容,只有原型。错误都看起来像这样:

  

严重级代码描述项目文件行抑制状态   错误LNK2005&#34; public:__ thishisall BST :: BST(void)&#34; (?? 0BST @@ QAE @ XZ)已经在BST.obj中定义了BasicBinarySearchTreeReference C:\ Users \ guita \ documents \ visual studio 2015 \ Projects \ BasicBinarySearchTreeReference \ BasicBinarySearchTreeReference \ main.obj 1

我也遇到LNK1169错误,无法解读。

我非常感谢任何有关我为何会收到这些错误的见解,我真的很想了解BST更好,而这正是我的目标。

谢谢!

0 个答案:

没有答案