将结构直接传递给函数

时间:2010-04-08 17:03:18

标签: c++ struct

我有一个像我这样初始化的结构:

typedef struct
{
 word w;
 long v;
}
MyStruct;


MyStruct sx = {0,0};
Update(sx);

现在,首先声明它然后传递它似乎是一种浪费。我知道在C#中,有一种方法可以在一行中完成所有工作。是否有可能以更聪明(更简洁:更清晰)的方式将其传递给我的更新功能?

2 个答案:

答案 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>