重写基元数据类型的转换
Overriding conversion of primitive data types
在下面的代码中,我试图重载int
的=
运算符。这样我就可以在我的程序中支持int A= &d
语句。
class Data{
public:
int a;
Data(int A): a(A) {}
operator int() {return a;}
};
int operator=(int &lhs, Data* rhs){
lhs = rhs->a;
return lhs;
}
int main(){
Data d(10);
int A = &d;
return 0;
}
但它给出了编译时错误:
错误:"int运算符=(int&,Data*)"必须是非静态成员函数int运算符=(int&lhs,Data*rhs){
test1.cpp:在函数"int main()"中:
test1.cpp:错误:无效从"数据*"转换为'int'[-fpermission]int A=-d;
请给我建议让操作员超载的正确方法。
不能将赋值重载到int
。正如编译器告诉的那样,operator=
必须是类的非静态成员函数,故事结束。
在您的类中已经有了到int
的转换,所以您可以编写int A = d;
。
类中不需要赋值运算符(operator=
)重载。此外,不能有两个论点。
您所需要的只是转换运算符(您的operator int() {return a;}
)和像int A = d;
这样的适当赋值。当您在d
之前写入&
时,如果int
的宽度足以在系统上存储指针,则将d
的地址放入A
。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- Static_cast转换为错误的数据类型,但结果仍然正确?
- 如何使用 dart:ffi 将 Uint8List 转换为 C 等效数据类型
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- C++将 wwn 字符串转换为识别为十六进制的数据类型
- 从 cpp lib 调用函数时的数据类型转换
- 如何将PyObjects转换为C数据类型
- 将运算符<<与隐式转换的非基本数据类型一起使用时出错
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- pybind11:Python 到 C++ 数据类型转换不起作用
- 尝试执行绕道附加,但无法将我的lua函数的数据类型转换为LPVOID
- 使用正确的数据类型转换java中的c++方法逻辑
- 数据类型在 CPP 中将 int 转换为双倍
- 将数据类型从C#封送至C++的类型转换问题
- 数据类型(从 malloc 返回)是如何转换的?
- XLL由XLW制造,BOOST UBLAS MyMatrix数据类型转换为双**失败
- 在C++中为C库强制转换数据类型
- 在C++中,关于位移和强制转换数据类型