![](/img/trans.png)
[英]How to call a function with std::variant return type and arguments from a pointer?
[英]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};
這是模棱兩可的。 您有long
和char
的變體,但它們是int
文字。 它們應該轉換成什么? long
和char
?
如果您希望它們是long
,請改為使用long
文字:
ret = { 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 0L };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.