Si j'ai ces 2 constructeurs pour MyClass
:cast Implicite par constructeur avec plusieurs arguments
MyClass(int n1);
MyClass(int n1, int n2);
et une surcharge (non membres) operator+
:
MyClass operator+(MyClass m1, const MyClass& m2);
Cela me permet d'écrire du code comme ce:
MyClass m;
5 + m:
qui je suppose utilise un casting implicite à travers le constructeur défini, correct?
Est-il possible de faire ce cast implicite avec le constructeur prenant 2 arguments? Avec le code ressemblant à quelque chose comme ceci:
MyClass m;
{15, 8} + m:
?
Ou peut-être simplement faire un cast explicite de {9, 4} à un objet MyClass
?
Est-ce que ceux qui devront maintenir ce code plus tard (ce qui pourrait vous inclure, BTW) une faveur et rendre ce constructeur «explicite». IME à long terme conversions implicites créent plus de problèmes que ce qu'ils valent. – sbi
Et mettre MyClass (5) + m sera toujours plus clair quand quelqu'un lira ceci au lieu de devoir retourner à la classe pour se demander à quel type il est converti, le cas échéant, ou si vous ajoutez juste un int à celui-ci. – David
sbi: cela semble raisonnable. Comment rendre le constructeur explicite? Juste ajouter le mot-clé explicite devant la déclaration? – Moberg