Fair and simple: How do I check if anything else but an integer is passed to my class in c++?
If I pass f.e. a char 'a' my class gets number 97 in ascii.
I tried std::numeric_limits but I don't get why it is not detecting integers:
#include <iostream>
#include <limits>
class integerCheck
{
public:
integerCheck(int value)
{
if((value != std::numeric_limits<int>::is_integer))
return;
std::cout << value << std::endl;
}
};
int main()
{
integerCheck valInt(88);
integerCheck valChar('a');
integerCheck valFloat(13.44f);
return 0;
}
I found this Post working with std::enable_if but I can't imagine there is no way to detect wrong input even in c++20 but wrapping everything in a template.
What am I missing, what should I look/search for to detect anything but an integer value? Thanks upfront
Delete the constructor taking
chars and make the ctorexplicitto prevent acceptingfloats as followsThis doesn't allow the two following ctors to compile
I think the following will be better to prevent all of types except
int.Notice that the past code doesn't prevent the est of the integral types like
long,size_t,short, ...