例如我有一个RECT和一个具有RECT作为参数的子
RECT wr = {0, 0, somevar1, somevar2};
someSub(wr);
由于我在其他任何地方都不需要RECT,因此我可以在将其发送到子程序时对其进行初始化吗?就像是
someSub(RECT {0, 0, somevar1, somevar2}); <- doesnt work :(
哦,使用vs2010进行编译
最佳答案
我过去所做的是使用构造函数创建一个子结构:
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;
}
它甚至具有相同的语法!但是对我来说,构造函数的感觉要好一些。
关于c++ - 如何在将POD结构作为变量传递时进行初始化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17627880/