是否可以将“未命名”变量传递给函数?

时间:2010-08-03 08:23:16

标签: c++

假设有以下功能:

void SetTheSize(const SIZE *size) { ... }

有没有办法在不指定SIZE变量的情况下调用该函数?如,

SetTheSize((const SIZE*)&{10, 10});

修改 我应该提到SIZE是一个结构体,没有SIZE(int,int)构造函数。

4 个答案:

答案 0 :(得分:6)

不,只有C ++中最接近的东西是这样的:

void SetTheSize(const SIZE& size); //Change the pointer to const reference

使用未命名的临时变量调用它:SetTheSize(SIZE(10,10));

答案 1 :(得分:1)

SetTheSize(&SIZE{10, 10});将“适用”C ++ 0x中改进的初始化语法。

它“只”值得警告:取一个临时的地址。

法律事务是将临时文件绑定到引用:

void SetTheSize(SIZE&&);

void SetTheSize(const Size&);

使用

SetTheSize(Size{10, 10});

答案 2 :(得分:0)

虽然您可以通过const引用传递临时值,但您无法通过指针执行此操作。并且您无法创建这样的数组(如果这是您的语法尝试的那样)。所以,没有。

答案 3 :(得分:0)

到目前为止,没有一个答案是迂腐的,有人必须这样做。这实际上非常简单:

void SetTheSize(const SIZE *size);
SIZE const newSize(10, 10);
SetTheSize(&newSize);

传递给SetTheSize的变量确实是一个未命名的临时变量。它是表达式&newSize的结果,类型为SIZE const*

如果您希望SIZE对象本身是一个未命名的临时对象,而不是传递给SetTheSize的指针,那么这也是可能的:

void SetTheSize(const SIZE *size);
SIZE const& newSize = SIZE(10, 10);
SetTheSize(&newSize);

现在newSize是对未命名的临时变量的引用。