2010-08-03 155 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是一位不願透露姓名的臨時變量的引用。