Domanda molto semplice. È questo C++ 11 valido?Inizializzatore membro non statico da un altro non statico
struct Foo {
int bar = 1;
int baz = bar;
};
GCC (4.7.2) e Clang (3.1) sia accettarlo con le impostazioni pedanti:
-std=c++11 -Wall -W -pedantic
Intel C++ (13.0.1.117) non lo fa. E 'abbaia a int baz = bar;
con:
error: a nonstatic member reference must be relative to a specific object
Chi ha ragione?
Nel caso in cui ti chiedi, io uso questo per il codice come questo, dove si porta il codice di inizializzazione più vicini, piuttosto che spostare l'ultima riga nel costruttore:
uint8_t colorR = -1;
uint8_t colorG = -1;
uint8_t colorB = -1;
uint8_t colorA = -1;
GLubyte RGBAVec[4] = {colorR, colorG, colorB, colorA};
Grazie. Sembra definitivo. Anche se cosa si intende con "o di una classe derivata da quella classe"? Come è possibile inizializzare un membro con un membro di una classe derivata? La classe derivata non è stata ancora dichiarata, quindi non è possibile accedervi. –
@Nikos C. "o di una classe derivata da quella classe" si riferisce a "un inizializzatore brace-or-equal" che significa che l'inizializzatore è quello che si trova nella classe dervied. Fondamentalmente penso che significhi che puoi inizializzare membri di dati non statici con membri di dati non statici delle tue classi genitore. È il contrario rispetto a quello che hai capito, il che ha molto più senso :) – Drax