jac*_*hab 6 c++ operator-overloading
我有一个CCounter类,其中包含由互斥锁保护的整数值.我已经定义了几个运算符,比如post/pre inc/dec返回一个整数,所以我可以这样做:
CCounter c(10);
int i = c++;
Run Code Online (Sandbox Code Playgroud)
但是我怎么做一个简单的任务i = c呢?我试图定义friend operator =但它给了我
operator=(int&, const CCounter&)’ must be a nonstatic member function
错误.请指教.谢谢.
Mar*_*age 17
您需要定义一个从CCounter转换为int的转换运算符.将此成员添加到您的班级:
operator int() const {
return ...;
}
Run Code Online (Sandbox Code Playgroud)
小智 8
如您所知,赋值运算符必须是类的成员函数.由于int不是类,因此不能为它们编写operator =().正如其他人指出的那样,替代方法是编写一个转换为int的函数.我强烈建议您编写一个像ToInt()这样的命名函数来执行此操作,而不是使用转换运算符,这可能是非明显错误的来源.