2016-05-29 152 views
0

是否有语法来初始化DataItem dh.size元素为sizeof(DataItem)?下面的代码使用构造函数并依靠编译器将事物优化为常量值。不是完美的解决方案...是否有语法来初始化嵌套结构?默认嵌套结构初始化

struct DataHeader_t { 
    int sz = 0; 
    int type = 0; 
}; 

struct DataItem { 
    DataItem() {dh.sz = sizeof(DataItem);} 
    DataHeader_t dh; 
    float data1 = 0; 
    float data2 = 0; 
    ... 
}; 
+1

'int sz = sizeof * this'? – user657267

+2

在construtor中初始化事物有什么问题?无论如何,这只是一个风格问题。 – HolyBlackCat

+0

@HolyBlackCat在最坏的情况下,初始化将在运行时完成,但它可以在编译时完成 – tohaz

回答

2

不完美的解决方案......有没有语法来初始化嵌套的结构?

是的,该结构称为构造函数,并且您已经在使用它。

+1

“下面的代码使用构造函数并依靠编译器将事物优化为常量值” – tohaz

+1

@tohaz:完全是,这就是我所说的,以及我所指的。为了使这个更清楚:不,没有更好的办法,因为c'tors是*正确*和*唯一*的方式。 –