Как мне сделать конструктор, который принимает любой примитивный тип и конвертирует в int в c ++?

Я делаю программу, где мне нужно объявить конструктор, который может принимать различные примитивные типы, такие как double или же float и преобразовать это в int,

Моя программа использует только int, поэтому мне нужно принять любой примитивный тип данных в конструкторе и преобразовать его в int,

0

Решение

Вы можете использовать конструктор шаблона:

struct Foo
{
template <typename T>
explicit Foo(const T& x) :i(x) {}
private:
int i;
};
5

Другие решения

Вы можете использовать SFINAE, чтобы вызвать ошибку компиляции, если тип не может быть преобразован в int, например, так …

template<class T>
MyConstructor(const T& x, typename std::enable_if<std::is_convertible<T, int>::value>::type* = nullptr)
{
int myint = static_cast<int>(x);
}
1

По вопросам рекламы [email protected]