gpt4 book ai didi

c++ - 在被调用方站点强制进行重载选择

转载 作者:行者123 更新时间:2023-12-03 06:58:41 24 4
gpt4 key购买 nike

给定代码:

#include <iostream>
#include <functional>
#include <type_traits>

using ftype = int ( int ) ;
using function_type = std::function<ftype> ;

struct STest
{
STest(bool b) { }
STest(function_type f) { }
};

int AFunction ( int parm )
{
return (parm + 1);
}

int main()
{
STest ss(&AFunction);
return 0;
}
在 main() 函数中构造 'ss' 会导致使用采用 bool 的构造函数,而我希望使用采用 function_type 的构造函数。显然,我可以通过更改在调用方站点解决此问题:
STest ss(&AFunction);
STest ss(static_cast<function_type>(&AFunction));
并且将使用采用 function_type 的构造函数。但是有什么方法可以更改 STest 结构中被调用者站点的代码,以便使用采用函数类型的构造函数,即使我只是指定 STest ss(&AFunction);作为代码,无需更改每个构造函数采用的类型。

最佳答案

看来您唯一声明的要求是不要更改现有的构造函数。
但是您没有说不添加另一个重载:

STest(ftype f) : STest{function_type{f}} {}
正确的重载被委托(delegate)给。

关于c++ - 在被调用方站点强制进行重载选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64639823/

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