gpt4 book ai didi

c++ - 创建几个相互不兼容的数字类型

转载 作者:太空狗 更新时间:2023-10-29 19:53:03 24 4
gpt4 key购买 nike

<分区>

我想创建封装原始数字类型的轻量级类型:

struct A { long value; }
struct B { long value; }
struct C { long value; }
...

这样我就可以对每种类型应用常用的算术运算,得到预期的结果(与内置类型 long 相比,没有任何运行时开销):

A a1 {10};
A a2 {20};
A a3 = a1 + a2:
++a3;
std::cout << a3; // prints "31"
...

但是,我不想在不同类型之间进行任何(自动)转换,我也不想允许任何混合不同类型的算术运算。例如,下面的代码应该编译:

A a1 {10};
A a2 {20};
B b3 = a1 + a2: // error, cannot convert A to B
a2 += b3; // error, A::operator+=(B) does not exist
...

现在,如果我只需要一种类型,那么所有这些都会很简单;只需为类 A 定义适当的操作即可。但是,如果我尝试对仅名称不同的类 A、B、C 等执行相同的操作,很快就会变得乏味。

我知道我可以使用预处理器宏来生成具有不同名称的多个拷贝。但是,我想知道是否有一种不使用预处理器且不需要任何重复代码的更优雅的方法。 (C++11 特定的解决方案很好。)

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com