在下面的代码中,我尝试重载=
的{{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;
请建议我正确的方法来重载运营商。
答案 0 :(得分:2)
您无法将作业重载到int
。正如编译器告诉你的那样,operator=
必须是类的非静态成员函数,故事结束。
您已经在班级中转换为int
,因此您可以撰写int A = d;
。
答案 1 :(得分:0)
您的班级中不需要赋值运算符(operator=
)重载。此外,它不能采取两个论点。
您需要的只是强制转换操作符(您的operator int() {return a;}
)以及int A = d;
之类的正确赋值。当您在&
之前写d
时,如果d
的宽度足以在您的系统上存储指针,则会将A
的地址放入int
。