例如我有一个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/

10-13 06:58