在 C++ 中,我们可以为每个整数创建一个类吗?

问题描述

我需要创建一个NumberModuloN。对于每个正整数 N,应该有一个不同的类。什么是最优雅的方式来做到这一点?

以下是更多详细信息:数据由 0N-1 范围内的单个整数组成。可以使用一些公共运算符重载方法(如 +*-++ 等)对其进行修改

这个想法是,例如,numberModulo100 的对象与 numberModulo99 的任何对象都没有关系。加、减、乘它们没有意义。

我想到的一件事是为 N 使用一个常量变量,该变量在构造函数中初始化。这是对常量变量 https://stackoverflow.com/a/18775482/15360444 的引用。但问题是,现在,每个二元运算符方法都必须在继续之前检查两个操作数的 N 是否匹配。不是很优雅。

我需要类似于 C++ 模板的东西,它为每种数据类型提供不同的类。我只需要为每个正整数一个不同的类。

解决方法

您可能会在模板中使用非类型参数,例如:

template <std::size_t N>
struct NumberModuloN
{
    /*..*/
};