C++ 从函数返回std::variant
我试图从我的函数返回一个C++ 从函数返回std::variant,c++,xcode,clang,clang++,variant,C++,Xcode,Clang,Clang++,Variant,我试图从我的函数返回一个std::vector或std::vector,但编译器抱怨这行ret={1,2,3,4,5,6,7,8,9,0} class CharFactory { public: static std::vector<std::variant<long,char>> getChars(TokenType t){ std::vector<std::variant<long,char>>
std::vector
或std::vector
,但编译器抱怨这行ret={1,2,3,4,5,6,7,8,9,0}代码>
class CharFactory {
public:
static std::vector<std::variant<long,char>> getChars(TokenType t){
std::vector<std::variant<long,char>> ret;
switch (t) {
case TokenType::BINOP:
ret = {'+','-','*','/'};
break;
case TokenType::NUMBER:
ret = {1,2,3,4,5,6,7,8,9,0};
break;
case TokenType::LP:
ret = {'('};
break;
case TokenType::RP:
ret = {')'};
break;
default:
ret = {};
}
return ret;
}
};
我用谷歌搜索了一下,但找不到解决办法。我怎样才能纠正这个错误
谢谢
这是不明确的。您有long
和char
的变体,但它们是int
文本。它们应该转换成什么<代码>长
和字符
如果希望它们是long
,请改为使用long
文字:
ret = { 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 0L };
谢谢在本例中,我希望编译器将
int
解释为long
,但显然我错了。
ret = {1,2,3,4,5,6,7,8,9,0};
ret = { 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 0L };