覆盖原始数据类型的转换

时间:2016-04-03 06:35:45

标签: c++ operator-overloading

在下面的代码中,我尝试重载=的{​​{1}}运算符。这样我就可以在我的程序中支持int语句。

int A= &d

但它给出了编译时错误:

  

错误:'int operator =(int&,Data *)'必须是a   非静态成员函数int operator =(int& lhs,Data * rhs){
  test1.cpp:在函数'int main()'中:
  test1.cpp:错误:无效   从'Data *'转换为   'int'[-fpermissive] int A =& d;

请建议我正确的方法来重载运营商。

2 个答案:

答案 0 :(得分:2)

您无法将作业重载到int。正如编译器告诉你的那样,operator=必须是类的非静态成员函数,故事结束。

您已经在班级中转换为int,因此您可以撰写int A = d;

答案 1 :(得分:0)

您的班级中不需要赋值运算符(operator=)重载。此外,它不能采取两个论点。

您需要的只是强制转换操作符(您的operator int() {return a;})以及int A = d;之类的正确赋值。当您在&之前写d时,如果d的宽度足以在您的系统上存储指针,则会将A的地址放入int