Избежание неявного преобразования в конструкторе. Ключевое слово "явный" здесь не помогает

Я могу избежать неявного преобразования конструктора с помощью ключевого слова explicit. Так что теперь можно избежать таких преобразований, как A a1 = 10;.

Но все же я могу инициализировать A a1 = A(20.2);. Как я могу отключить создание объекта, чтобы объект мог быть создан только в том случае, если мы передаем целое число в качестве параметра, например, A a1 = A(10)?

#include <iostream>

class A
{
public:
    explicit A(int a)
    {
        num = a;
    }

    int num;
};

int main()
{
    A a1 = A(10.0);
    std::cout << a1.num;
    return 0;
}
55
задан Peter Mortensen 3 August 2019 в 20:04
поделиться