關於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