gpt4 book ai didi

c++ - 如何选择特定的函数重载?

转载 作者:行者123 更新时间:2023-11-28 06:45:22 25 4
gpt4 key购买 nike

我想将一个重载运算符传递给一个函数,该函数无法确定应该使用两个重载中的哪一个。

// This works, not overloaded:
chai.add(chaiscript::fun(&HttpRequest::operator+), "+");
// This does not, overloaded:
chai.add(chaiscript::fun(&(
std::map<std::string,std::string>::operator[]), "[]");

chaiscript::fun 需要一个通用参数,但它无法确定要使用哪个重载。
我需要指定重载,但我不知道语法。我试过这样的事情:

chai.add(chaiscript::fun(&(
std::map<std::string,std::string>::operator[]<foo>), "[]");

但这行不通。

指定重载的语法是怎样的?

最佳答案

以下内容可能会帮助您选择 map::operator[] 的一种重载

static_cast<
std::string& (std::map<std::string, std::string>::*)(const std::string&)>(
&std::map<std::string, std::string>::operator []);

或者使用typedef:

using MyMap = std::map<std::string, std::string>;

static_cast<std::string& (MyMap::*)(const std::string&)>(&MyMap::operator []);
// ReturnType Class params

关于c++ - 如何选择特定的函数重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25106778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com