Ho una coppia di costruttori che funzionano perfettamente nello stile C++ 03. Uno dei costruttori chiama un costruttore della superclasse (o classe base) ...Costruttori delegati: un inizializzatore per un costruttore delegante deve apparire da solo
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), win(new RawWindow(*this))
{
refresh();
}
...
sto cercando di capire come utilizzare la nuova funzionalità C++ 11 delegante ctor per neaten questo un po '. Tuttavia, il codice seguente dà il seguente errore del compilatore ...
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), Window(){}
"un inizializzatore per un costruttore delegare deve apparire solo" ...
Esiste un modo per aggirare questo ??
"evita di delegare i costruttori in questo esempio" - Visto che il tuo codice funziona (grazie +1), potresti ampliare il motivo per cui fai questo suggerimento? – learnvst
@learnvst Si comportano come un argomento predefinito di fantasia. Trovo gli argomenti predefiniti o il codice originale per essere più leggibile. – Pubby
Sì, la cosa 'Window (Rectangle())' sembra un po 'strana. Vedo da dove vieni. – learnvst