Откуда эта ошибка 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 лучше, и это в настоящее время на моем пути.
Спасибо!