0

这会打印有关限定符的错误消息,但并不真正理解这意味着什么以及如何调整代码以使其正常工作?无论如何,非常感谢您查看代码。

注意: ostream 运算符在 Node 类中是友好的。

using namespace std;

ostream& operator(ostream& output, const Node* currentNode)
{
   return output;
}

void Node::nodeFunction()
{
   //This node has items attached to the 'this' statement. After
   //the necessary functions, this is called to output the items.

   cout << this;
}
4

2 回答 2

0

运算符的&返回值放在错误的位置,通常最好使用引用而不是 ostream 运算符的指针:

ostream& operator<<(ostream &output, const Node &currentNode)
{
    // Output values here.
    return output;
}

void Node::nodeFunction()
{
     cout << *this;
}
于 2011-07-17T05:20:20.620 回答
0

您的重载流运算符声明应如下所示:

std::ostream& operator<<(std::ostream& os, const T& obj);
^^^^^^^^^^^^^

您应该返回对 的对象的引用std::ostream,它&被错误地放置在您的重载函数原型中。

看看这里的工作示例。

为了完整起见,在此处添加源代码。
注意:Node为了便于演示,我将班级成员设为公开。

#include<iostream>

using namespace std;

class Node
{
    public: 
    int i;
    int j;
    void nodeFunction();

    friend ostream& operator <<(ostream& output, const Node* currentNode);     
};

ostream& operator<<(ostream& output, const Node* currentNode)
{
   output<< currentNode->i;
   output<< currentNode->j;

   return output;
}

void Node::nodeFunction()
{
   //This node has items attached to the 'this' statement. After
   //the necessary functions, this is called to output the items.

   cout << this;
}

int main()
{
    Node obj;
    obj.i = 10;
    obj.j = 20;

    obj.nodeFunction();

    return 0;
}
于 2011-07-17T05:22:31.173 回答