示例:
long a;
BoundedCounter e;
所以我想将类中私有变量计数器的值赋给。
a=e;
尝试使用此:
long int & operator=(long b)
{
b=counter;
return b;
}
和
long int & operator=(long b, BoundedCounter &a)
{
b=a.getCounter();
return b;
}
返回编译错误:
无法在作业中转换
BoundedCounter' to
long int'
和
`long int& operator =(long int,BoundedCounter&)'必须是非静态成员函数
如何定义一个operator =在类的外部,当左侧是正常变量而不是对象时,它将起作用?
答案 0 :(得分:2)
operator=
不适用于此,因为赋值的左侧是基本类型(并且您无法为基本类型定义operator=
)。尝试给BoundedCounter
operator long
,例如:
class BoundedCounter
{
public:
// ...
operator long() const
{
return counter;
// or return getCounter();
}
};
答案 1 :(得分:1)
您的代码正在从BoundedCounter
转换为long
,因此您需要定义从BoundedCounter
到long
的转换(强制转换)操作符:
class BoundedCounter {
private:
long a_long_number;
public:
operator long() const {
return a_long_number;
}
};
您定义的赋值运算符允许您为long
类的实例分配BoundedCounter
值,这与您尝试执行的操作相反。