将结构直接传递给函数

ra1*_*170 1 c++ struct

我有一个我初始化的结构,如下所示:

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


MyStruct sx = {0,0};
Update(sx);
Run Code Online (Sandbox Code Playgroud)

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

Tyl*_*nry 6

在C++中,结构与类相同,但在结构中默认情况下一切都是公共的.所以你可以给一个struct一个构造函数,例如

struct MyStruct
{
 word w;
 long v;

 MyStruct(word w, long v) : w(w), v(v) {}
};


Update(MyStruct(0,0));
Run Code Online (Sandbox Code Playgroud)

此外,C语言结构类型定义是不必要的,并且在C++中是不鼓励的.


AnT*_*AnT 5

这取决于你Update的声明方式.如果它需要MyStruct类型的值或类型的引用const MyStruct&,您可以这样做

Update(MyStruct());
Run Code Online (Sandbox Code Playgroud)

这是可能的,因为您希望用零初始化对象(()在这种情况下初始化程序将执行此操作).如果需要不同的(非零)初始化值,则必须提供构造函数,MyStruct或者按照问题的方式执行(至少在当前版本的C++语言中).