C++ C++;无法解释的错误:错误:在';之前应为初始值设定项&';代币
我知道还有其他一些类似的帖子,但我已经在这个错误上呆了一个多小时了,现在还没弄明白。这是给你带来麻烦的代码C++ C++;无法解释的错误:错误:在';之前应为初始值设定项&';代币,c++,istream,ostream,C++,Istream,Ostream,我知道还有其他一些类似的帖子,但我已经在这个错误上呆了一个多小时了,现在还没弄明白。这是给你带来麻烦的代码 istream& operator>>(istream& in, UndirectedGraph& g) { int numVerticies; in >> numVerticies; g = UndirectedGraph(numVerticies); for(int i = 0; i < numVe
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;
istream&operator>>(istream&in,无向图&g)
{
国际货币基金组织;
在>>数字证书中;
g=无向图(NumV垂直度);
对于(int i=0;i>温度;
如果(温度!=i)
{
g、 linkedAdjacencyList[i]->值=温度;
}
}
int边;
在>>边缘;
g、 边=边;
对于(int i=0;i>第一>>第二;
附录(第一、第二);
}
返回;
}
奥斯特雷姆算子
这里有两种返回类型:void
和UndirectedGraph::istream&
。一个人需要离开。另一种方法也是如此
此外,我假设您的意思是std::istream
,而不是UndirectedGraph::istream
,对吗
最后,要使此代码正常工作,您需要通过引用传递参数g
,否则您将无法更改它
这就给我们留下了:
std::istream& operator>>(std::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& operator>>(istream& in, UndirectedGraph g)
话虽如此,函数定义中似乎没有返回任何内容。似乎存在一些问题。首先,插入和提取操作符是成员方法还是仅仅是辅助函数?对于后者,签名类似于
istream & operator>>(istream& in, UndirectedGraph &g)
对于前者
istream &UndirectedGraph::operator>>(istream& in, UndirectedGraph &g)
在任何一种情况下,如上所示,都应该将UndirectedGraph参数设置为引用参数。否则,您只是按值传递参数,这可能不是您想要的。似乎有几个问题。首先,插入和提取操作符是成员方法还是仅仅是辅助函数?对于后者,签名类似于
istream & operator>>(istream& in, UndirectedGraph &g)
对于前者
istream &UndirectedGraph::operator>>(istream& in, UndirectedGraph &g)
在任何一种情况下,如上所示,都应该将UndirectedGraph参数设置为引用参数。否则,您只是按值传递参数,这可能不是您想要的。有点重复@don wakefield所说的。我想您希望操作符分别返回std::istream&和std::ostream&而不是UndirectedGraph::istream和UndirectedGraph::ostream
所以签名看起来像:
std::istream& UndirectedGraph::operator>>(istream& in, UndirectedGraph g)
std::ostream& UndirectedGraph::operator<<(ostream& out, UndirectedGraph& g)
std::istream&UndirectedGraph::operator>>(istream&in,UndirectedGraph g)
std::ostream&UndirectedGraph::operator有点重复@don wakefield说的话。我想您希望操作符分别返回std::istream&和std::ostream&而不是UndirectedGraph::istream和UndirectedGraph::ostream
所以签名看起来像:
std::istream& UndirectedGraph::operator>>(istream& in, UndirectedGraph g)
std::ostream& UndirectedGraph::operator<<(ostream& out, UndirectedGraph& g)
std::istream&UndirectedGraph::operator>>(istream&in,UndirectedGraph g)
std::ostream&UndirectedGraph::Operator第1行和第28行是什么?@Daniel的istream和ostream声明第1行和第28行是什么?@Daniel的istream和istream声明是真的,我完全忽略了这一点。根据建议,我将行(istream和ostream)更改为UndirectedGraph::istream&operator>>(istream&in,UndirectedGraph&g)
,但现在我在“&”标记之前得到了预期的构造函数、析构函数或类型转换error@Jacob:如果对问题的编辑具有代表性,那么您还没有对代码进行正确的更改。再看一眼!如果有关系的话,UndirectedGraph存在于我所包含的.h文件中,并且我正在从.cpp重载file@Oli呜呜!哈哈,当我看到评论贴出来的时候,我正在编辑,所以我没有改变。现在应该好了@奥利,你说得对,我直接忘了还东西。但它仍然无法通过声明中“&”标记之前的预期构造函数、析构函数或类型转换。这是真的,我完全忽略了这一点。根据建议,我将行(istream和ostream)更改为UndirectedGraph::istream&operator>>(istream&in,UndirectedGraph&g)
,但现在我在“&”标记之前得到了预期的构造函数、析构函数或类型转换error@Jacob:如果对问题的编辑具有代表性,那么您还没有对代码进行正确的更改。再看一眼!如果有关系的话,UndirectedGraph存在于我所包含的.h文件中,并且我正在从.cpp重载file@Oli呜呜!哈哈,当我看到评论贴出来的时候,我正在编辑,所以我没有改变。现在应该好了@奥利,你说得对,我直接忘了还东西。但是它仍然无法在声明中的“&”标记之前通过预期的构造函数、析构函数或类型转换。Stold Charlesworth也一样,我在istream和ostream中去掉了void。现在我又犯了一个错误?“&”之前需要构造函数、析构函数或类型转换token@Konrad:@Wakefield和@Oli答对了,在istream或ostream之前没有std:
或UndirectedGraph::
。请参阅Oli帖子上的评论,当我尝试使用输入时,我收到了一个新的错误operator@JacobL但我的答案,不像他们的,会起作用的——试试看!Don的答案不起作用,因为oper