Я пытаюсь создать консольное приложение в Visual Studio 2015 в качестве упражнения.
У меня есть два класса: Node и Tree.
Вот заголовок для обоих:
#pragma once
#include "INode.h"
class CNode : INode
{
public:
CNode(int nValue, int nIndex);
virtual~CNode();
virtual const int GetValue(void) const;
virtual int GetIndex(void);
virtual int GetParentIndex(void);
virtual void SetIndex(int nIndex);
private:
const int m_nValue;
int m_nIndex;
int m_nParentIndex;
};
#pragma once
class INode
{
public:
INode(void);
virtual ~INode() = 0;
// Returns the value inside the node
virtual const int GetValue(void) const = 0;
// Returns the index of the node
virtual int GetIndex(void) = 0;
// Returns the index of the parent of the node
virtual int GetParentIndex(void) = 0;
// Sets the index of the node
virtual void SetIndex(int nIndex) = 0;
};
#pragma once
#include "INode.h"
class ITree
{
public:
ITree();
virtual ~ITree();
// Adds a node to the tree and sorts the tree
virtual void Insert(int nValue) = 0;
virtual void Insert(INode &node) = 0;
// Extracts the root node from the tree and sorts the tree
virtual INode & GetRoot(void) = 0;
};
Но я получаю сообщение об ошибке при создании решения:
1> Node.obj: ошибка LNK2001: неразрешенный внешний символ "public: __thiscallINode :: INode (void) "(?? 0INode @@ QAE @ XZ) 1> Node.obj: ошибка LNK2001: неразрешенный внешний символ" public: virtual __thiscall INode :: ~ INode (void) "(?? 1INode @@ОАЭ @ XZ) 1> Tree.obj: ошибка LNK2001: неразрешенный внешний символ "public: __thiscall ITree :: ITree (void)" (?? 0ITree @@ QAE @ XZ) 1> Tree.obj: ошибка LNK2001: неразрешенный внешний символ"public: virtual __thiscall ITree :: ~ ITree (void)" (?? 1ITree @@ UAE @ XZ)
Я получу ошибку ссылки, только когда унаследую классы интерфейса.Решение будет работать нормально, если не наследует интерфейсы.
Заранее извиняюсь, если это дублирующий вопрос.Я не могу найти существующий вопрос, связанный с моей проблемой.Заранее спасибо за помощь.