• [^] # Re: Masquage d'identifiant

    Posté par (site web personnel) . En réponse au message Constructeur : mauvais constructeur choisi. Évalué à 5.

    Est-ce la bonne façon ou juste un gros hack bien moche qui marche juste dans ce cas, je ne sais pas.

    Ton programme d'avant est faux, tout simplement.

    MaClasse* nouvClasse (nouveauSocket);

    ne fait pas du tout ce que tu penses: cela initialise un pointeur nouvClasse sur type MaClasse avec la valeur nouveauSocket. En l'absence de surcharge d'opérateurs etc., c'est exactement comme si tu avais écrit

    MaClasse* nouvClasse = nouveauSocket;

    et le message du compilateur devient limpide. En C++ (langage tout pourriTM) il y a deux-cent treize façons d'initialiser les variables qui se mélangent avec les initialisations des objets. Tu viens de te faire avoir par un des aspects deagréables du langage qui favorise la confusion entre les variables «immédiates» et les objets (les premières n'ont pas de constructeur).

    Tu peux aussi écrire

    int n (1);

    pour initialiser un entier.

    C'est quoi ton livre pour le C++? Comme apparemment tu débutes dans le langage, je te recommande:

    http://www.parashift.com/c++-faq/
    http://yosefk.com/c++fqa/index.html

    (En anglais.) Cela devrait t'aider à avoir une vision plus claire du langage plus utile qu'une conception basée sur «les gros hacks bien moches».

    Et ta version avec le new est bel et bien la façon idoine de faire.

    Bon courage!