2010-08-03 154 views
2

比方说,有以下功能:是否可以将“未命名”变量传递给函数?

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

有没有办法来调用该函数,而不指定大小的变量?例如,

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

编辑: 我应该已经提到,SIZE是一个结构,而不SIZE(INT,int)构造。

+0

因为变量基本上是以C++命名的对象,所以匿名变量只是一个对象:) – fredoverflow 2010-08-03 10:57:49

回答

6

没有,唯一的事情最近在C++中是这样做:

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

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

+0

谢谢Naveen,我想你的解决方案既不能工作,那是我的错(对此很抱歉)。我编辑了这个问题。 – Tassos 2010-08-03 09:05:52

+0

@Tassos:在这种情况下,我没有看到使用未命名变量进行此操作的可能性。 – Naveen 2010-08-03 09:19:03

0

虽然可以通过const引用传递临时值,但不能通过指针来完成。你不能创建这样的数组(如果这是你的语法试图做的)。所以不行。

0

SetTheSize(&SIZE{10, 10});会“工作”在C改进的初始化语法++ 0x中。

它“唯一”值得警告:以临时地址。

法律要做的事情是将临时绑定到引用:

void SetTheSize(SIZE&&); 

void SetTheSize(const Size&); 

与使用

SetTheSize(Size{10, 10}); 
0

无问题的答案至今已迂腐,有人需要这样做。它其实真的很简单:

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是一位不愿透露姓名的临时变量的引用。