所以我有一段代碼,我試圖測試。代碼正在檢查幾個向量(這些是結構的元素)在某些點與已知向量相等,但是我遇到了一個問題。當我嘗試將向量與已知向量如下,Brace封閉的初始化程序列表?轉換爲矢量
assert((class1.getattr().getattr().getVec(key) == {4,3,2,2}))
我收到以下錯誤:
assertAll.cpp:105:82: error: could not convert ‘{4,3,2,2}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<int>’
的代碼的其餘部分是正確的,並斷言的lval中是絕對是一個應有的載體。我正在用g ++編譯-std = C++ 11 -Wall -Wextra -pedantic -O。有人知道如何解決這個問題嗎?有沒有一種方法可以將括號初始化列表括起來作爲向量,還是有更好的方法來做到這一點?
你可以編寫一個小函數來比較向量元素,然後返回一個可以使用assert檢查的bool值,或者使用std :: equal。 – learningToCode 2014-12-06 02:03:11
問題是cpp不能識別括號內的信息作爲向量,因此使用std :: vector的任何函數都無法工作。 – Eric 2014-12-06 02:06:57
我們的第一個想法是將它傳遞給一個比較函數,但是因爲我們不能將第二部分作爲矢量進行投射,顯然這也不起作用。 –
Eric
2014-12-06 02:08:02