非常简单的问题。这个有效的C++ 11吗?非静态成员初始化来自另一个非静态
struct Foo {
int bar = 1;
int baz = bar;
};
GCC(4.7.2)和锵(3.1)既与迂腐设置接受它:
-std=c++11 -Wall -W -pedantic
英特尔C++(13.0.1.117)没有。它在int baz = bar;
与:
error: a nonstatic member reference must be relative to a specific object
谁是正确的?
万一你不知道,我用这个像这样的代码,它带来的初始化代码紧密联系起来,而不是最后一行移动到构造函数:
uint8_t colorR = -1;
uint8_t colorG = -1;
uint8_t colorB = -1;
uint8_t colorA = -1;
GLubyte RGBAVec[4] = {colorR, colorG, colorB, colorA};
感谢。这看起来很明确。尽管“或从这个阶级派生的阶级”是指什么?如何用派生类的成员初始化成员?派生类尚未声明,因此无法访问它。 –
@Nikos C.“或从该类派生的类”是指“一个括号或等于初始值设定项”,这意味着初始值设定项是一个在dervied类中。基本上我认为这意味着你可以使用父类的非静态数据成员初始化非静态数据成员。这是你理解它的另一种方式,这更让人感觉:) – Drax