Scu*_*eve 2 c++ operator-overloading
我正在尝试使用友元函数重载<<运算符,但由于某种原因它没有看到私有成员变量.任何想法为什么会发生这种情况会非常有帮助.
这是头文件
class Set
{
private:
struct Node
{
int val;
Node* link;
};
Node *cons(int x, Node *p);
Node *list;
public:
Set() {list = NULL;}
bool isEmpty() const;
int size() const;
bool member (int x) const;
bool insert (int x);
bool remove (int x);
void print() const;
const Set operator+(const Set &otherSet)const;
const Set operator*(const Set &otherSet)const;
Node* getSet()const{return list;}
void setList(Node *list);
friend ostream& operator <<(ostream& outputStream, const Set &set);
};
Run Code Online (Sandbox Code Playgroud)
这是函数定义.
ostream& operator <<(ostream& outputStream, const Set &set)
{
Node *p;
p = list;
outputStream << '{';
while(p->link != NULL)
{
outputStream << p->val;
p = p->link;
}
outputStream << '}';
return outputStream;
}
Run Code Online (Sandbox Code Playgroud)
问题不在Node于其可访问性,而在于其范围:不合格的类型名称不会通过友谊变为范围 - 您应该使用Set::Node.
这同样适用于list变量:它应该是set.list.
有了这两个更改,您的代码就会在ideone上编译得很好.
| 归档时间: |
|
| 查看次数: |
2731 次 |
| 最近记录: |