比方说,有以下功能:是否可以将“未命名”变量传递给函数?
void SetTheSize(const SIZE *size) { ... }
有没有办法来调用该函数,而不指定大小的变量?例如,
SetTheSize((const SIZE*)&{10, 10});
编辑: 我应该已经提到,SIZE是一个结构,而不SIZE(INT,int)构造。
比方说,有以下功能:是否可以将“未命名”变量传递给函数?
void SetTheSize(const SIZE *size) { ... }
有没有办法来调用该函数,而不指定大小的变量?例如,
SetTheSize((const SIZE*)&{10, 10});
编辑: 我应该已经提到,SIZE是一个结构,而不SIZE(INT,int)构造。
虽然可以通过const引用传递临时值,但不能通过指针来完成。你不能创建这样的数组(如果这是你的语法试图做的)。所以不行。
SetTheSize(&SIZE{10, 10});
会“工作”在C改进的初始化语法++ 0x中。
它“唯一”值得警告:以临时地址。
法律要做的事情是将临时绑定到引用:
void SetTheSize(SIZE&&);
或
void SetTheSize(const Size&);
与使用
SetTheSize(Size{10, 10});
无问题的答案至今已迂腐,有人需要这样做。它其实真的很简单:
void SetTheSize(const SIZE *size);
SIZE const newSize(10, 10);
SetTheSize(&newSize);
变量传递给SetTheSize
确实是一个无名暂时的。它是表达式的结果并且具有类型SIZE const*
。
如果你想要的SIZE
对象本身是一个无名暂时的,而不是指针传递给SetTheSize
,这也是有可能的:
void SetTheSize(const SIZE *size);
SIZE const& newSize = SIZE(10, 10);
SetTheSize(&newSize);
现在newSize
是一位不愿透露姓名的临时变量的引用。
因为变量基本上是以C++命名的对象,所以匿名变量只是一个对象:) – fredoverflow 2010-08-03 10:57:49