C++无法解释的错误:错误:令牌之前的预期初始值设定项'&'
C++ error unexplained: error: expected initializer before '&' token
我知道有一些其他的帖子像这样,但我已经在这个单一的错误一个多小时了,现在不能弄清楚。这是产生问题的代码
istream& operator>>(istream& in, UndirectedGraph& g)
{
int numVerticies;
in >> numVerticies;
g = UndirectedGraph(numVerticies);
for(int i = 0; i < numVerticies; i++)
{
int temp;
in >> temp;
if(temp != i)
{
g.linkedAdjacencyList[i]->value = temp;
}
}
int edges;
in >> edges;
g.edges = edges;
for(int i = 0; i < edges; i++)
{
int first;
int second;
in >> first >> second;
addEdge(first, second);
}
return in;
}
ostream& operator<<(ostream& out, UndirectedGraph& g)
{
out << g.numVerticies << endl;
for(int i = 0; i < g.numVerticies; i++)
{
out << g.linkedAdjacencyList[i] << " ";
}
out << endl;
out << g.edges << endl;
for(int i = 0; i < g.numVerticies; i++)
{
out << linkedAdjacencyList[i]->value;
Node* whereto;
whereto = linkedAdjacencyList[i]->adj;
while(whereto->adj != NULL)
{
out << " " << whereto->value;
whereto->adj = whereto->adj->adj;
}
}
return out;
}
int main()
{
ifstream inFile;
inFile.open("hw8.in");
UndirectedGraph graph;
inFile >> graph;
…
在这里,错误出现在第1行和第28行,istream和ostream重载。
谢谢你的帮助!
This:
void UndirectedGraph::istream& operator>>(istream& in, UndirectedGraph g)
没有意义!您可能需要:
istream& operator>>(istream& in, UndirectedGraph g)
话虽如此,你似乎没有在你的函数定义返回任何东西。
void UndirectedGraph::istream& operator>>(istream& in, UndirectedGraph g)
这里有两个返回类型:void
和UndirectedGraph::istream&
。一个人需要离开。其他方法也是一样。
此外,我假设你指的是std::istream
,而不是UndirectedGraph::istream
,对吗?
最后,为了使这段代码工作,您需要通过引用传递参数g
,否则您将无法更改它。
剩下的是:
std::istream& operator>>(std::istream& in, UndirectedGraph& g)
似乎有几个问题。首先,插入和提取操作符是成员方法还是只是辅助函数?对于后者,签名类似于
istream & operator>>(istream& in, UndirectedGraph &g)
对于前者
istream &UndirectedGraph::operator>>(istream& in, UndirectedGraph &g)
在任何一种情况下,如上面所示,您都应该将UndirectedGraph形参作为引用实参。否则,您只是按值传递参数,这可能不是您想要的。
这是在重复don-wakefield说过的话。我想你希望你的操作符返回std::istream&和std:: ostream&
UndirectedGraph::istream所以签名是这样的:
std::istream& UndirectedGraph::operator>>(istream& in, UndirectedGraph g)
std::ostream& UndirectedGraph::operator<<(ostream& out, UndirectedGraph& g)
相关文章:
- holeMenuProgram.cpp:38:1 错误:'}'令牌之前的预期主表达式
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 错误:令牌 { '{' 之前应存在非限定 ID
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- (错误:令牌之前'<<'预期的主表达式)
- 错误:"->"令牌之前的预期初始值设定项
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 错误:C++中']'令牌之前的预期主表达式
- 错误:令牌之前的预期主表达式'&&'
- 令牌 C++ 错误之前'['非限定 ID
- 错误:令牌之前的预期主表达式'/'
- QT:错误 ["*"令牌之前的预期")",并且主窗口未命名类型]
- C 补充错误:“ =”令牌之前的预期初始化器
- '&lt;'''&lt;'''&quot的模板类错误''令牌”
- 模板错误 令牌之前的预期主表达式'>'
- C++错误 "'"令牌之前的预期主表达式(在 ifstream 上使用 getline?
- C++ 错误 - 令牌之前的预期主表达式'.'|
- 错误:')'令牌强制转换问题之前期望的主表达式
- 错误:':'令牌之前期望的初始化项
- G++ 错误 - 令牌之前')'预期非限定 ID