У меня возникли некоторые проблемы при попытке получить этот шаблон для компиляции, я думаю, что проблема с классом Edge, я успешно скомпилировал его до того, как добавил его.
Во-первых, это должно моделировать взвешенный связный граф,Каждый граф имеет граф, имеет коллекцию всех узлов в системах, и каждый узел является шаблоном, который содержит значение узла типа T (я проверил его с помощью int и char) и список ребер, ребрасоединения с другими узлами, и имеет вес и указатель на другой узел.
Когда у меня был только список узлов (на графике), он компилировался нормально, и все было хорошо.тогда, когда я добавил часть Edges, она просто не компилируется.Может ли быть так, что шаблонам просто не нравится, когда 1 ссылается на тот, который, в свою очередь, указывает назад?
Я получаю следующие ошибки: (Есть несколько других, но я уверен, что это просто ошибка, перенесенная вперед)
C4430: отсутствует указатель типа - предполагается int.Примечание: C ++ не поддерживает default-int edge.cpp 12
ошибка C2974: «std :: list»: неверный аргумент шаблона для «_Ty», введите ожидаемый node.cpp 13
ошибкаC2065: «Край»: необъявленный идентификатор node.cpp 13
Любая помощь будет принята с благодарностью, и если есть какая-либо дополнительная информация, которую я могу предоставить, просто спросите.
#ifndef GRAPH_CPP
#define GRAPH_CPP
#include "Node.cpp"
#include <list>
using namespace std;
template <typename T>
class Graph
{
private:
list< Node<T>* > nodes;
//bool (*compare) (T, T);
public:
Graph(){}
void addNodes(T nNode)
{
nodes.push_back( new Node<T>( nNode ) );
}
};
#endif
#ifndef NODE_CPP
#define NODE_CPP
#include <vector>
#include "Edge.cpp"
using namespace std;
template <typename T>
class Node
{
private:
list< Edge < T > > adjacencies;
T value;
public:
Node(T nVal)
{
value = nVal;
}
T getValue()
{
return value;
}
};
#endif //NODE_CPP
#ifndef EDGE_CPP
#define EDGE_CPP
#include "Node.cpp"
template <typename T>
class Edge
{
private:
Node<T>* node;
public:
Edge(){}
};
#endif