Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;无法解释的错误:错误:在';之前应为初始值设定项&';代币_C++_Istream_Ostream - Fatal编程技术网

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