2
所以我有這樣的代碼行:的std ::對被調用默認的構造函數爲其成員之一
statesArray.push_back(std::pair<States, StateSettings>(States::funMode, StateSettings(1, 2, 3, 4, 5, 6)));
statesArray
是QVector<std::pair<States, StateSettings> >
類型的對象。
StateSettings
類有這兩個構造函數(從巫婆默認一個被刪除):
StateSettings() = delete;
StateSettings(int a, int b, int c, int d, int e = 0, int f = 0);
編譯時,我得到這個錯誤:
Error 2 error C2280: 'StateSettings::StateSettings(void)' : attempting to reference a deleted function.
爲什麼std::pair
試圖調用已刪除默認的構造函數,如果我傳遞一個對象顯式構造一個非默認的構造函數?
我該如何解決這個問題?
從Qt的參考:*「存儲在不同的容器中的值可以是任意分配的數據類型,以確定是否符合,類型必須提供一個默認的構造函數,一個拷貝構造函數和一個賦值運算符。「* –
[這可能會在C++ 17中修復。](http://en.cppreference.com/w/cpp/utility/對/對) – dasblinkenlight
@PiotrSkotnicki是的,這是問題所在。切換到'std :: vector',現在一切正常。謝謝。 –