我有一个像我这样初始化的结构:
typedef struct
{
word w;
long v;
}
MyStruct;
MyStruct sx = {0,0};
Update(sx);
现在,首先声明它然后传递它似乎是一种浪费。我知道在C#中,有一种方法可以在一行中完成所有工作。是否有可能以更聪明(更简洁:更清晰)的方式将其传递给我的更新功能?
答案 0 :(得分:6)
在C ++中,结构与类相同,但在结构中默认情况下一切都是公共的。所以你可以给一个struct一个构造函数,例如
struct MyStruct
{
word w;
long v;
MyStruct(word w, long v) : w(w), v(v) {}
};
Update(MyStruct(0,0));
此外,C语言结构类型定义是不必要的,并且在C ++中不鼓励。
答案 1 :(得分:5)
这取决于你Update
的声明方式。如果它需要MyStruct
类型的值或const MyStruct&
类型的引用,则可以执行
Update(MyStruct());
这是可能的,因为你想用零初始化你的对象(这是()
初始化器在这种情况下会做的事情)。如果需要不同的(非零)初始化值,则必须为MyStruct
提供构造函数,或者按照问题的方式(至少在当前版本的C ++语言中)执行此操作。 / p>