关于c++中结构体列表初始化,聚合问题
聚合(aggregate)
C++语法规定:不能使用初始值列表来初始化”非聚合(non-aggregate)”的对象。那么,什么才算是”聚合”呢?C++认为聚合包括满足如下条件的数组、类及结构:
不包含任何构造函数。
不包含任何私有/保护成员。
不包含任何基类。
不包含任何虚函数。
所以结构体如果定义构造函数, 则列表初始化不能使用。
在c里面编辑结构体是没有构造函数, 自然也编译不过。
所以一般跨平台写结构体的。
struct A{
int m_nValue;
ifdef __cplusplus
A()
{
m_nValue = 0;
}
endif
};
这样, 但是定义的时候, 列表初始化, 也并不能直接附上值