C++自定义类型
我有一个类int32,它的设置方式基本上可以作为int操作符重载进行接口,但有一部分我没有得到C++自定义类型,c++,operator-overloading,custom-type,C++,Operator Overloading,Custom Type,我有一个类int32,它的设置方式基本上可以作为int操作符重载进行接口,但有一部分我没有得到 int32 i32 = 100; // Works int i = 200; // Works i32 += 10; // Works i32 -= 10; // Works, i32 = 100 right now i = i32; // Doesn't work 我需要重载哪个运算符来实现引用i32返回其存储值,在本例中为100,或者如何实现?您可以添加一个运算符int: 请注意,它有两种味道。
int32 i32 = 100; // Works
int i = 200; // Works
i32 += 10; // Works
i32 -= 10; // Works, i32 = 100 right now
i = i32; // Doesn't work
我需要重载哪个运算符来实现引用i32返回其存储值,在本例中为100,或者如何实现?您可以添加一个运算符int:
请注意,它有两种味道。上述情况将允许
int32 foo;
int i = foo;
如果将转换运算符定义为显式
然后,上述设计将失败,并需要显式强制转换:
int32 foo;
int i = static_cast<int>(foo);
您可以添加一个运算符int:
请注意,它有两种味道。上述情况将允许
int32 foo;
int i = foo;
如果将转换运算符定义为显式
然后,上述设计将失败,并需要显式强制转换:
int32 foo;
int i = static_cast<int>(foo);
您应该编写转换运算符
int32 a = 1;
std::int32_t b = a;//OK
但是,指定显式转换和强制转换转换是有害的
int32 a = 1;
//std::int32_t b = a;//NG
std::int32_t b = static_cast<std::int32_t>(a);
注意:不应将转换运算符写入int,因为不能保证int为32位
您应该编写转换运算符
int32 a = 1;
std::int32_t b = a;//OK
但是,指定显式转换和强制转换转换是有害的
int32 a = 1;
//std::int32_t b = a;//NG
std::int32_t b = static_cast<std::int32_t>(a);
注意:不应将转换运算符写入int,因为无法保证int为32位。在int32类上实现转换运算符
class int32
{
// conversion operator
operator int() const
{
int ret = // your logic
return ret;
}
}
此转换运算符将原语类型int转换为您定义的类型int32 在int32类上实现一个转换运算符
class int32
{
// conversion operator
operator int() const
{
int ret = // your logic
return ret;
}
}
此转换运算符将原语类型int转换为您定义的类型int32 请发一封信@πάνταῥεῖ 我想那就足够了。。你想让我发布int32源代码的全部内容吗?如果不知道int32是什么,没有人能说出问题的真正原因。@JosephCaruso,i32类的全部内容是不必要的。你必须显示足够的代码来说明为什么你认为它应该工作。重载转换运算符到int类型。请发布一个@πάνταῥεῖ 我想那就足够了。。你想让我发布int32源代码的全部内容吗?如果不知道int32是什么,没有人能说出问题的真正原因。@JosephCaruso,i32类的全部内容是不必要的。你必须显示足够的代码来说明为什么你认为它应该工作。重载转换运算符到int类型。这完美地描述了我试图实现的目标!谢谢。这完美地描述了我想要达到的目标!谢谢