Предотвращение неявного приведения числовых типов в конструкторе в C ++ - PullRequest
8 голосов
/ 19 февраля 2010

У меня есть конструктор вида:

MyClass (int a, int b, int c);

и вызывается с таким кодом:

MyClass my_object (4,0, 3,14, 0,002);

Я бы хотел предотвратить автоматическое преобразование типа double в int или хотя бы получить предупреждения во время компиляции.

Похоже, что "явное" ключевое слово в этих случаях не работает, верно?

Ответы [ 3 ]

9 голосов
/ 19 февраля 2010

Какой у тебя компилятор?В gcc вы можете использовать -Wconversion для предупреждения вас об этих типах конверсий.

5 голосов
/ 19 февраля 2010

Объявите приватный конструктор так:

private:
template <class P1, class P2, class P3>
MyClass(P1,P2,P3);

Это приведет к ошибке времени компиляции для любой конструкции, использующей 3 параметра, которые не все int, и она переносима.

2 голосов
/ 19 февраля 2010

Объявление частного MyClass(double a, double b, double c) конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...