我想超載operator<<
我Graph
類,但我不斷收到各種錯誤:重載流插入操作失誤,將無法編譯
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2143: syntax error : missing ',' before '<'
我有原型operator<<
放在右邊的Graph
類以上定義。 operator<<
的定義位於文件的最底部。這些錯誤與標頭警衛有什麼關係?
這裏的Graph.h
:
#ifndef GRAPH
#define GRAPH
#include <iostream>
#include <vector>
#include <map>
#include <sstream>
#include "GraphException.h"
#include "Edge.h"
using namespace std;
template <class VertexType>
ostream& operator<<(ostream& out, const Graph<VertexType>& graph);
/** An adjacency list representation of an undirected,
* weighted graph. */
template <class VertexType>
class Graph
{
friend ostream& operator<<(ostream& out, const Graph& graph);
// stuff
}
template <class VertexType>
ostream& operator<<(ostream& out, const Graph<VertexType>& graph)
{
return out;
}
#endif GRAPH
和這裏的main
:
#include <iostream>
#include "Graph.h"
using namespace std;
const unsigned MAX_NUM_VERTICES = 9;
int main()
{
// create int graph:
Graph<int> iGraph(MAX_NUM_VERTICES);
// add vertices and edges
cout << iGraph;
return 0;
}
如果您嘗試製作[SSCCE](http://www.sscce.org/),人們將來會更有幫助。以這種方式思考的一個好的副作用是,在發佈問題之前,你可能會找出你的問題。 – 2013-05-05 06:32:08
謝謝,我不知道SSCCE。我編輯了所有我覺得無關的東西。事情是,我通常不是什麼無關緊要的事情的最佳仲裁者。 – JamesGold 2013-05-05 06:40:58
什麼是'iGraph'? – juanchopanza 2013-05-05 08:05:09