问题描述
E0413 no suitable conversion function from "std::variant<char,short>" to "char" exists
这是我的程序:
int main()
{
std::vector<std::variant<char,short>> vec;
switch(type)
{
case 1200: //char
char tab[10];
for(unsigned i = 0; i<6; i++)
tab[i] = vec.at(i);
case 1300: //short
short tab[10];
for(unsigned i = 0; i<6; i++)
tab[i] = vec.at(i);
}
return 0;
}
我使用 std::variant
是因为需要区分类型。
我该如何解决这个问题?
谢谢
解决方法
char tab[10];
for(unsigned i = 0; i<6; i++)
tab[i] = vec.at(i);
您需要明确指定要采用哪种类型的变体。为此,您可以使用 std::get
:
char tab[10];
for(unsigned i = 0; i<6; i++)
tab[i] = std::get<char>(vec.at(i)); // std::get<0>(vec.at(i)) would have the same effect
,
使用 std::get<char>(variant)
而不是隐式转换。