聚合(aggregate)
C++語法規定:不能使用初始值列表來初始化"非聚合(non-aggregate)"的對象。那么,什么才算是"聚合"呢?C++認為聚合包括滿足如下條件的數組、類及結構:
不包含任何構造函數。
不包含任何私有/保護成員。
不包含任何基類。
不包含任何虛函數。
所以結構體如果定義構造函數, 則列表初始化不能使用。
在c里面編輯結構體是沒有構造函數, 自然也編譯不過。
所以一般跨平台寫結構體的。
struct A{
int m_nValue;
ifdef __cplusplus
A()
{
m_nValue = 0;
}
endif
};
這樣, 但是定義的時候, 列表初始化, 也並不能直接附上值