标题基本上已经说得很清楚了。我主要想这样做是为了创建一个对象(比如,自定义字符串对象),可以初始化其他API中其他函数的参数。下面是我尝试让自定义整数类起作用的示例:
#include <iostream>
using namespace std;
class test
{
public:
int member;
test(int i) : member(i) {}
friend int &operator=(int &i, test t);
};
int &operator=(int &i, test t)
{
return (i = t.member);
}
int main()
{
int i;
test t = 90;
cout << (i = t);
return 0;
}
不幸的是,我收到了一个错误,说操作符=需要成为成员函数。我理解C++标准的目标是防止实现赋值运算符的静态和非成员重载,但是还有其他方法吗?感谢任何帮助/建议!
operator int()
应该是const
,而且如果使用explicit
,test(int)
更安全(尽管有时不太方便 -test t = 90
)。 - Tony Delroy