默认嵌套结构初始化
问题描述:
是否有语法来初始化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
“下面的代码使用构造函数并依靠编译器将事物优化为常量值” – tohaz
+1
@tohaz:完全是,这就是我所说的,以及我所指的。为了使这个更清楚:不,没有更好的办法,因为c'tors是*正确*和*唯一*的方式。 –
'int sz = sizeof * this'? – user657267
在construtor中初始化事物有什么问题?无论如何,这只是一个风格问题。 – HolyBlackCat
@HolyBlackCat在最坏的情况下,初始化将在运行时完成,但它可以在编译时完成 – tohaz