假设有以下功能:
void SetTheSize(const SIZE *size) { ... }
有没有办法在不指定SIZE变量的情况下调用该函数?如,
SetTheSize((const SIZE*)&{10, 10});
修改 我应该提到SIZE是一个结构体,没有SIZE(int,int)构造函数。
答案 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
是对未命名的临时变量的引用。