关于c++中结构体列表初始化,聚合问题


聚合(aggregate)
C++语法规定:不能使用初始值列表来初始化"非聚合(non-aggregate)"的对象。那么,什么才算是"聚合"呢?C++认为聚合包括满足如下条件的数组、类及结构:
不包含任何构造函数。
不包含任何私有/保护成员。
不包含任何基类。
不包含任何虚函数。

所以结构体如果定义构造函数, 则列表初始化不能使用。
在c里面编辑结构体是没有构造函数, 自然也编译不过。

所以一般跨平台写结构体的。
struct A{
int m_nValue;

ifdef __cplusplus

 A()
    {
        m_nValue = 0;
    }

endif

};
这样, 但是定义的时候, 列表初始化, 也并不能直接附上值


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM