是否可以将对象分配给int?

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()这样的命名函数来执行此操作,而不是使用转换运算符,这可能是非明显错误的来源.