簡體   English   中英

在 C++03 中作為參數傳遞的結構的匿名 (?) 初始化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM