小编kon*_*ilo的帖子

是否可以选择创建包含具有不同返回类型的函数的向量?

我有以下向量

std::vector<std::pair<std::string, std::function<std::string(const PlayerFRDb&)>>> stringExtractors = {
    {" TEAM ", extractTeam},
    {" NAME ", extractName},
    {" TYPE ", extractProperty4},
};

std::vector<std::pair<std::string, std::function<int(const PlayerFRDb&)>>> intExtractors = {
    {" WS ", extractProperty0},
    {" LS ", extractProperty1},
    {" W ", extractProperty2},
    {" L ", extractProperty3},
};

std::vector<std::pair<std::string, std::function<char(const PlayerFRDb&)>>> charExtractors = {
    {" WAY ", extractProperty5},
};

std::vector<std::pair<std::string, std::function<double(const PlayerFRDb&)>>> doubleExtractors = {
    {" LINE ", extractProperty6},
};
Run Code Online (Sandbox Code Playgroud)

为了更容易地使用这些函数,我想将它们集中到一个向量中,但问题是它们返回不同的类型。

我尝试使用 std::variant,但无法初始化向量,因为编译器打印出:“没有构造函数的实例与参数列表参数类型匹配 ({...}, {...}, {. ..}、{...}、{...}、{...}、{...}、{...}) "

using FuncVariant = std::variant<
    std::function<std::string(const PlayerFRDb&)>, …
Run Code Online (Sandbox Code Playgroud)

c++ vector std-variant

-1
推荐指数
1
解决办法
146
查看次数

标签 统计

c++ ×1

std-variant ×1

vector ×1