我一直在玩升壓變體,遇到了似乎有問題的場景,但我覺得我缺乏如何正確使用助力變體的知識。下面是我放在一起C++ Boost變體錯誤
main.cpp
#include <boost/variant.hpp>
#include <iostream>
#include <stdint.h>
typedef boost::variant<uint16_t, uint32_t> MyInt;
int main()
{
uint16_t regular = 11;
MyInt custom = regular;
std::cout << custom << '\n';
return 0;
}
一個小測試程序確定,所以上述工作正常,但我得到一個錯誤,如果我試圖做到以下幾點:
int16_t invalid = 11;
MyInt custom = invalid; // This line causes the error.
我希望得到一個錯誤,但是錯誤並不能告訴我我的問題實際上發生在我的主要位置,但是在Boost的類中,這對於在更大的項目中工作時不是最有幫助的。
我開始研究助推訪問者將錯誤放在主要位置,但並未完全瞭解這些如何解決我的問題。我在訪客的正確軌道上還是錯過了其他一些?
編輯:
這裏真正的問題是在我的變種沒有指定任何類型的無效分配(即焦,的std :: string,double等)與其說轉換int16_t爲uint16_t。
哪兒要補充這兩條線? (順便說一句,你有一個myInt的類型o) –
如何使用另一個編譯器? Clang 3.7爲這段代碼提供了一些非常有用的錯誤信息。它還將錯誤的來源定位到MyInt custom = invalid; //這行代碼會導致錯誤。' – rettichschnidi
MyInt中沒有錯別字,它是一個typedef,我用它們替換了第一行的兩行@ RichardHodges – MrJman006