0
template<class V, class E>
class G
{
public:
G();
void InsertVertex(const V&);
void InsertEdge(const V&, const V&, const E&);
private:
typedef set<V,less<V> > vSet;
typedef pair<const V,V> ePair;
typedef multimap<V,V,less<V> > eSet;
typedef map<ePair,E, less<ePair> > edgeValueMap;
vSet vertices;
eSet edges;
edgeValueMap edgeVals;
};
template<class V,class E>
G<V,E>::G(){}
template<class V,class E>
void G<V,E>::InsertVertex(const V& a)
{
vertices.insert(a);
}
template<class V,class E>
void G<V,E>::InsertEdge(const V& a,const V& b, const E& val)
{
//create a pair
ePair<const V,v> e(a,b);
edges.insert(e);
edgeVals.insert(e,val);
}
int main()
{
G<char,int> g;
g.InsertVertex('a');
g.InsertVertex('b');
g.InsertVertex('c');
g.InsertEdge('a','b',1);
return 0;
}
i "はePair電子(a、b)は、" 私は取得していますエラーを使用してペアを作成しながら、: I "template2.cpp:39:2:エラー 'G :: ePairは、' テンプレートではありません"このコンパイルエラーがなぜ起こっているのか正確にはわからないのですか?ここに何かがないのですか?このテンプレートペアをC++で初期化する方法は?
ePairが既にテンプレートパラメータでtypedef''dのstd ::ペア 'ですので、私はまた、修正しました。 –
「ePair」の宣言を表示してください。 –