Ich habe eine Klasse ohne Kopierkonstruktor oder Zuweisungsoperator. Ich muss eine Instanz dieser Klasse erstellen und initialisieren. Wie mache ich das?So initialisieren Sie eine statische Instanz einer Klasse ohne Kopierkonstruktor>
Code mit dem Problem (Beispiel):
class Q
{
int w;
public:
Q():w(19){};
Q(const Q&) = delete;
Q& operator = (const Q&) = delete;
static Q sQ;
};
Q Q::sQ = Q();
Anwendungsfall: Ich habe eine Klasse, die von QObject
und so hat seinen Zuweisungsoperator und Copy-Konstruktor gelöscht abgeleitet wird. Es sollte eine statische Instanz der Klasse verfügbar sein, wie kann dies erreicht werden?
Funktioniert nicht einfach 'Q Q :: sQ;' für Sie? – HolyBlackCat
Es gibt einen Vorschlag, den Kopierschutz zu garantieren, also würde Code wie dieser auch mit gelöschten Kopier- und Verschiebekonstruktoren kompilieren. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html – Brian
Es ist wie alle deine Q sind gleichzeitig mit dem gleichen Baby Q schwanger; neugierig, schwanger in einem unendlichen Kreislauf. Nun, Annahme der Definition Q Q :: sQ; vorgeschlagen von HolyBlackCat, mit einer Memberfunktion void f() {std :: cout << "Rauch und Spiegel \ n"; } Sie können jetzt \t Q q; \t q.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.sQ.f(); – Loreto