Откуда эта ошибка LNK2005 в коде BST?

Я работаю над базовым проектом 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 "public: __thiscall BST::BST(void)" (??0BST@@QAE@XZ) уже определена в BST.obj BasicBinarySearchTreeReference C:\Users\guita\documents\visual studio 2015\ Проекты \BasicBinarySearchTreeReference\BasicBinarySearchTreeReference\main.obj 1

Я также получаю ошибку LNK1169, которую не могу расшифровать.

Любое понимание того, почему я получаю эти ошибки, очень ценится, я действительно пытаюсь понять BST лучше, и это в настоящее время на моем пути.

Спасибо!

0 ответов

Другие вопросы по тегам