4 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
最煩惱的解析
這與所謂的“C ++最令人煩惱的解析”有關(guān)?;旧?,任何可以被編譯器解釋為函數(shù)聲明的東西都將被解釋為函數(shù)聲明。
同一問題的另一個(gè)例子:
std::ifstream ifs("file.txt");std::vector<T> v(std::istream_iterator<T>(ifs), std::istream_iterator<T>());
v
被解釋為具有2個(gè)參數(shù)的函數(shù)聲明。
解決方法是添加另一對(duì)括號(hào):
std::vector<T> v((std::istream_iterator<T>(ifs)), std::istream_iterator<T>());
或者,如果您有C ++ 11和列表初始化(也稱為統(tǒng)一初始化)可用:
std::vector<T> v{std::istream_iterator<T>{ifs}, std::istream_iterator<T>{}};
有了這個(gè),就無法將其解釋為函數(shù)聲明。

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
因?yàn)樗灰暈楹瘮?shù)的聲明:
int MyFunction(); // clearly a function
MyObject object(); // also a function declaration

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
相同的語法用于函數(shù)聲明 - 例如函數(shù)object
,不帶參數(shù)和返回MyObject

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
因?yàn)榫幾g器認(rèn)為它是函數(shù)的聲明,不接受任何參數(shù)并返回MyObject實(shí)例。
- 4 回答
- 0 關(guān)注
- 849 瀏覽
添加回答
舉報(bào)