从函数返回std :: variant

弗尼斯

我试图从我的函数返回astd::vector<long>std::vector<char>,但是编译器抱怨此行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;
        }
};

我将Xcode 11.2.1与Apple clang版本11.0.0(clang-1100.0.33.12)一起使用。我收到的错误消息是

c.cpp:28:25: error: no viable overloaded '='
                    ret = {1,2,3,4,5,6,7,8,9,0};

我已经进行了一些谷歌搜索,但是找不到解决方案。我该如何解决错误。

谢谢

火焰
ret = {1,2,3,4,5,6,7,8,9,0};

这是模棱两可的。您可以使用long的变体char,但是它们是int文字。它们应该转换成什么?longchar

如果您希望它们为long,请long改用文字:

ret = { 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 0L };

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章