我有一些問題試圖讓這個模板編譯,我認爲問題是與邊緣類,我愉快地編譯之前,我添加它。無法編譯與模板的STL
首先,這應該是對加權連通圖進行建模。每個圖都有一個圖,它包含了系統中所有節點的集合,每個節點都是一個模板,它保存了類型T的節點值(我已經用int和char測試過)以及邊的列表,邊是到其他節點的連接,並且具有一個權重和另一個節點的指針。
當我只有一個節點列表(圖中)它編譯得很好,一切都很好。然後當我添加了邊緣部分它只是不編譯。難道模板只是不喜歡它,當1指向一個反過來指向的模板?
我收到以下錯誤:(有幾個人,但我相信他們只是錯誤結轉)
C4430:缺少類型說明符 - 詮釋 承擔。注意:C++不支持 默認int edge.cpp 12
錯誤C2974: '的std ::名單':無效 爲 '_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
您確定要包含.cpp文件嗎? – fredoverflow 2011-02-13 01:35:16
你如何實例化一切? – 2011-02-13 01:35:53