例如,我有一个RECT和一个以RECT作为参数的子
RECT wr = {0, 0, somevar1, somevar2};
someSub(wr);
因为我不需要其他任何地方的RECT有一种方法来初始化它,因为我将它发送到子?像
这样的东西someSub(RECT {0, 0, somevar1, somevar2}); <- doesnt work :(
哦,你用vs2010编译
答案 0 :(得分:1)
我过去所做的是使用构造函数创建子结构:
struct Rect : RECT
{
Rect(long l, long t, long r, long b)
{
left = l;
top = t;
right = r;
bottom = b;
}
};
someSub(Rect(a, b, c, d));
Rect
本身不是POD,因为它有一个构造函数,但它将拼接或者下载到RECT
(或RECT&
)传递给函数。
当然,如果你看一下,它与创建一个函数没什么不同:
RECT Rect(long l, long t, long r, long b)
{
RECT r = {l, t, r, b};
return r;
}
它甚至具有相同的语法!但构造函数对我来说有点好看。
答案 1 :(得分:1)
在C ++ 11中,您可以在调用中内联结构:
func({0, 0, somevar1, somevar2});
在旧版本的C / C ++中,您可以创建一个辅助函数来初始化结构并返回结果:
inline RECT new_RECT(int a, int b, int c, int d)
{
RECT ret = {a, b, c, d};
return ret;
}
然后你可以打电话:
func(new_RECT(a, b, c, d));
并且结构创建应该由编译器内联。