我正在研究一个基本的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更好,而这正是我的目标。
谢谢!