比方說,有以下功能:是否可以將「未命名」變量傳遞給函數?
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