const-Referenz muss initialisiert im Konstruktor base/member-Initialisierungsliste
Ich versuche zu blockieren den Zugang zu den Standard-Konstruktor einer Klasse, die ich Schreibe. Der Konstruktor möchte ich andere zu verwenden, erfordert eine const-Referenz auf ein anderes Objekt. Ich habe die default-Konstruktor private zu verhindern, dass andere von der Nutzung. Ich bin immer zu einem compiler-Fehler für die Standard-Konstruktor, weil das const-reference member-variable nicht richtig initialisiert. Was kann ich tun, um diese zu kompilieren?
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...
{
}
};
Du musst angemeldet sein, um einen Kommentar abzugeben.
nicht erklären default-Konstruktor.
Es ist nicht verfügbar, eh (automatisch, dass es ist), wenn Sie erklären, Ihre eigenen Konstruktor.
ziemlich umfassende Erklärung von Konstruktoren können hier gefunden werden:
http://www.parashift.com/c++-faq-lite/ctors.html
Der einfachste Weg zum erstellen der Standard-Konstruktor, die Sie nicht verwenden möchten (das ist der Fall mit Ihrem Konstruktor, ist das richtig?) ist einfach nicht, es zu definieren, das heißt:
In diesem Fall, kann es ein wenig überflüssig, da der compiler nicht zu, erstellen Sie ein Standard-Konstruktor für eine Klasse mit Referenz-member, aber es ist besser, es in Fall, dass Sie löschen Sie den Verweis-Mitglied.