在 C++ 中,我们可以为每个整数创建一个 class 吗?
In C++, can we create a class for each integer?
我需要创建一个 class NumberModuloN
。对于每个正整数 N
,应该有一个不同的 class。最优雅的方法是什么?
以下是更多详细信息:数据由 0
到 N-1
范围内的单个整数组成。可以使用一些 public 运算符重载方法对其进行修改,例如 +
、*
、-
、++
等
想法是,例如,numberModulo100
的对象与 numberModulo99
的任何对象无关。加减乘除都没有意义
我想到的一件事是为 N
使用一个在构造函数中初始化的常量变量。这里引用常量变量。但问题是,现在每个二元运算符方法都必须在继续之前检查两个操作数的 N
是否匹配。不是很优雅。
我需要类似于 C++ 模板的东西,它为每种数据类型提供不同的 class。我只需要为每个正整数设置一个不同的 class。
您可能会在模板中使用非类型参数,因此,类似于:
template <std::size_t N>
struct NumberModuloN
{
/*..*/
};
我需要创建一个 class NumberModuloN
。对于每个正整数 N
,应该有一个不同的 class。最优雅的方法是什么?
以下是更多详细信息:数据由 0
到 N-1
范围内的单个整数组成。可以使用一些 public 运算符重载方法对其进行修改,例如 +
、*
、-
、++
等
想法是,例如,numberModulo100
的对象与 numberModulo99
的任何对象无关。加减乘除都没有意义
我想到的一件事是为 N
使用一个在构造函数中初始化的常量变量。这里引用常量变量。但问题是,现在每个二元运算符方法都必须在继续之前检查两个操作数的 N
是否匹配。不是很优雅。
我需要类似于 C++ 模板的东西,它为每种数据类型提供不同的 class。我只需要为每个正整数设置一个不同的 class。
您可能会在模板中使用非类型参数,因此,类似于:
template <std::size_t N>
struct NumberModuloN
{
/*..*/
};