Bardzo proste pytanie. Czy to jest prawidłowe C++ 11?Niestatyczny inicjator elementu z innego niestatycznego obiektu
struct Foo {
int bar = 1;
int baz = bar;
};
GCC (4.7.2) i Clang (3,1) zarówno przyjmuję je z pedantycznym ustawieniami:
-std=c++11 -Wall -W -pedantic
Intel C++ (13.0.1.117) nie. To szczeka na int baz = bar;
z:
error: a nonstatic member reference must be relative to a specific object
Kto ma rację?
W przypadku wątpliwości, używam tego kodu jak ten, gdzie przynosi kod inicjalizacji bliżej siebie, niż przeniesienie ostatnią linię do konstruktora:
uint8_t colorR = -1;
uint8_t colorG = -1;
uint8_t colorB = -1;
uint8_t colorA = -1;
GLubyte RGBAVec[4] = {colorR, colorG, colorB, colorA};
Dzięki. To wygląda na ostateczne. Co jednak oznacza "lub klasy wywodzącej się z tej klasy"? Jak można zainicjować element członkowski z elementem klasy pochodnej? Klasa pochodna nie została jeszcze zadeklarowana, więc nie można uzyskać do niej dostępu. –
@Nikos C. "lub klasy wywodzącej się z tej klasy" odnosi się do "brace-lub-equal-initializer" co oznacza, że inicjator jest tym, który jest w klasie pochodnej. Zasadniczo myślę, że oznacza to, że możesz zainicjować niestatyczne elementy danych za pomocą nie statycznego elementu danych swoich klas nadrzędnych. Jest na odwrót ten, który zrozumiałeś, co ma dużo więcej sensu :) – Drax