[英]Anonymous (?) initialization of a struct passed as an argument in C++03
說,我有
struct Foo
{
char a;
char b;
};
void bar(Foo foo);
初始化結構並將其傳遞給函數的最簡潔方法是什么? 理想情況下,我想寫一些類似的東西
bar(Foo = {'a','b'});
如果 Foo 是一個工會呢?
UPD:我真誠地道歉,這個問題應該只與 C++03 相關。 此外,在這種特殊情況下,應避免遠離 POD(該代碼適用於嵌入式系統,因此需要更短的字節碼)。 vonbrand,感謝 C++11 的回答。
在 C++ 11 中,您可以編寫:
bar({'a', 'b'});
或者:
bar(Foo{'a', 'b'});
(請參閱 Stroustup 的C++11 常見問題解答)。
克++ - 4.8.2接受該無投訴只有如果你給它-std=c++11
,鐺++ - 3.3給出了一個錯誤,除非-std=c++11
您可以向結構中添加構造函數。 例如
struct Foo
{
Foo(char a, char b) : a(a), b(b) {}
char a;
char b;
};
然后你可以調用你的函數
bar(Foo('a', 'b'));
如果是聯合,則可以為不同類型的聯合使用不同的構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.