J'essaye de bloquer l'accès au constructeur par défaut d'une classe que j'écris. Le constructeur que je veux que les autres utilisent nécessite une référence const à un autre objet. J'ai rendu le constructeur par défaut privé pour empêcher d'autres de l'utiliser. J'obtiens une erreur de compilation pour le constructeur par défaut car la variable membre de la référence const n'est pas initialisée correctement. Que puis-je faire pour faire cette compilation?La référence const doit être initialisée dans la liste d'initialisation constructeur/base
class CFoo
{
public:
CFoo();
~CFoo();
};
class CBar
{
public:
CBar(const CFoo& foo) : fooReference(foo)
{
}
~CBar();
private:
const CFoo& fooReference;
CBar() // I am getting a compiler error because I don't know what to do with fooReference here...
{
}
};
Merci pour votre aide. Pour une raison quelconque, je pensais que le compilateur a généré un constructeur par défaut même si je n'en ai pas écrit un. –
@Trevor Oui, à condition de ne pas déclarer explicitement un constructeur (quel qu'il soit) dans votre définition de classe. –
@Trevor Vous devrez peut-être également bloquer le constructeur de copie. – rwong