【发布时间】:2016-02-18 08:44:07
【问题描述】:
我正在尝试通过相同的方法重载运算符'='和运算符'
class Vect{
public:
//..
Vect& operator=(const Vect& a);
ostream& operator<<(ostream& out, const Vect& vect);
//..
private:
int *data;
int size;
};
这个作品
Vect& Vect:: operator=(const Vect& a){
//..
//copy data operator
for(int i = 0; i< size; i++){
data[i] = a.data[i];
}
return *this;
}
但是:此代码导致错误
[错误] 'std::ostream& Vect::operator
ostream& Vect::operator<<(ostream& out, const Vect& vect){
//.. print vect
}
我正在阅读“C++ 中的数据结构和算法”一书部分 (1.5.4)。 他们说我必须使用班级朋友来重载'访问私有成员数据。 我不明白为什么。重载 '=' 运算符,我也可以在不使用“朋友”的情况下访问私有成员数据。
【问题讨论】:
-
你不好奇你得到的错误吗?因为它没有说明访问私有数据成员的任何内容。 (虽然这也可能是一个问题,一旦你解决了导致当前错误的问题)。