I need to create a class NumberModuloN. For each positive integer N, there should be a distinct class. What is the most elegant way to do this?
Here are some more details: The data consists of a single integer in the range 0 to N-1. It can be modified using some public operator overloading methods like +, *, -, ++, etc.
The idea is that, for example, an object of numberModulo100 has no business with any object of numberModulo99. Adding, subtracting, multiplying them won't make sense.
One thing I came up with was to use a constant variable for N that gets initialised in the constructor. Here is a reference to constant variables https://stackoverflow.com/a/18775482/15360444. But the problem is that, now, every binary operator method would have to check if the Ns of the two operands match before proceeding. It is not very elegant.
I need something similar to a C++ template which gives a different class for each data type. I just need a different class for each positive integer.
You might use non-type parameter in template, so, something like:
template <std::size_t N>
struct NumberModuloN
{
/*..*/
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With