0
C++構造函數重載歧義我有兩個構造函數的類:與initializer_list
myclass(std::initializer_list<int>);
myclass(std::initializer_list<std::initializer_list<int>);
下面的聲明能夠正常工作
myclass obj1 = {{1,2},{3,4},{5,6}}; //a 3x2 matrix
myclass obj2 = {{1,2,3}}; // a 1x3 matrix
但下面的聲明不工作,當我嘗試編譯,它說它含糊不清
myclass obj3 = {{1},{2},{3}}; //a 3x1 matrix
以下問題解決了這個問題:
myclass obj3 = {std::initializer_list<int>({1}),
std::initializer_list<int>({2}),
std::initializer_list<int>({3})};
但我覺得這個解決方案不舒服和難看。是否有可能做更好的事情?
'myclass obj3 = {{{1},{2},{3}}};'工作嗎? – NathanOliver
'{{{1}},{{2}},{{3}}}'怎麼樣? –
@NathanOliver(和Some-programmer-dude)這兩種解決方案都可以工作,但我不明白爲什麼:)無論如何,我一直在尋找一種解決方案,允許保留語法{{1},{2},{3 }},但如果它不可能,我將使用你的其中一個 – Hybridslinky