【发布时间】:2010-01-03 12:36:28
【问题描述】:
有没有更好的方法在 C++ 代码中初始化 C 结构?
我可以在变量声明点使用初始化列表;但是,如果在编译时不知道所有参数,或者我没有声明本地/全局实例,则这不是很有用,例如:
声明结构的旧 C 代码,也有 API 使用它
typedef struct
{
int x, y, z;
} MyStruct;
使用 C 库的 C++ 代码
void doSomething(std::vector<MyStruct> &items)
{
items.push_back(MyStruct(5,rand()%100,items.size()));//doesn't work because there is no such constructor
items.push_back({5,rand()%100,items.size()});//not allowed either
//works, but much more to write...
MyStruct v;
v.x = 5;
v.y = rand()%100;
v.z = items.size();
items.push_back(v);
}
创建本地实例,然后一次为每个成员设置一个(myStruct.x = 5; 等)真的很痛苦,并且在尝试向容器中添加 20 个不同的项目时有点难以阅读......
【问题讨论】:
-
您在寻找 C 或 C++ 的解决方案吗?
标签: c++ c initialization structure