0

我正在开发一个基本的 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 文件当前为空。它只有包含和返回 0 的 main()。

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

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

我还收到一个我无法破译的 LNK1169 错误。

非常感谢任何关于我为什么会遇到这些错误的见解,我真的想更好地理解 BST,而这目前是我的方式。

谢谢!

4

0 回答 0