이 템플릿을 컴파일하는 데 문제가 있습니다. 문제가 Edge 클래스에 있다고 생각합니다. 추가하기 전에 기꺼이 컴파일했습니다.템플릿으로 STL을 컴파일 할 수 없습니다.
먼저 가중 연결된 그래프를 모델링한다고 가정합니다. 각 그래프는 시스템의 모든 노드를 모아 놓은 그래프를 가지고 있으며, 각 노드는 T 타입의 노드 값 (int와 char로 테스트했습니다)과 가장자리 목록을 보유하고있는 템플릿입니다 다른 노드들에 대한 연결을 가지며, 다른 노드에 대한 가중치 및 포인터를 갖는다.
노드 목록 만 있으면 (그래프에서) 컴파일이 잘되었고 모두 잘되었습니다. then Edges 파트를 추가하면 컴파일되지 않습니다. 템플릿은 1이 1을 가리킬 때 그것을 좋아하지 않을 수 있습니까?
나는 다음과 같은 오류를 얻을 : (거기에 몇 가지 다른 사람들이 있지만 나는 그들이 단지 이월 된 오차 확신)
C4430를 : 누락 된 형식 지정자 - 은 가정 int로. 참고 : C++가 기본-INT edge.cpp 12
오류 C2974를 지원하지 않습니다 : '표준 : : 목록을': '_Ty'를 입력 예상 node.cpp 13
오류 C2065에 대한 잘못된 템플릿 인수 : 'Edge': 신고하지 않음 식별자 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
.cpp 파일을 포함 하시겠습니까? – fredoverflow
어떻게 모든 것을 인스턴스화합니까? –
당신은 cpp 파일을 포함해서는 안됩니다 ... 대신 헤더 파일을 포함시켜야합니다 ... – smerlin