ошибка LNK2001: неразрешенный внешний символ только при наследовании от интерфейсов - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь создать консольное приложение в 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)

Я получу ошибку ссылки, только когда унаследую классы интерфейса.Решение будет работать нормально, если не наследует интерфейсы.

Заранее извиняюсь, если это дублирующий вопрос.Я не могу найти существующий вопрос, связанный с моей проблемой.Заранее спасибо за помощь.

...