簡體   English   中英

從 function 返回 std::variant

[英]Return std::variant from a function

我試圖從我的 function 返回std::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};

這是模棱兩可的。 您有longchar的變體,但它們是int文字。 它們應該轉換成什么? longchar

如果您希望它們是long ,請改為使用long文字:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM