【发布时间】:2020-11-02 14:33:01
【问题描述】:
在运行时进行一次测试以确定调用两个函数中的哪一个并建立参数值。
然后每隔几秒调用一次函数。
void Foo::func( std::string s);
void Foo::func( std::string s1 std::string s2, std::string s2);
显然,每次调用都测试(调用哪个函数)效率低下,尤其是当函数及其参数值一旦建立就不会改变时。
我需要这样的东西:
测试一次调用哪个函数并建立参数值。
将初始化函数分配给某种可调用变量。
funcVar = void Foo::func( "blah", "blah", "woof" );
或
funcVar = void Foo::func( "blah" );
然后调用函数;
for( every few seconds )
{
call FuncVar;
}
我可以使用某种可调用变量来执行此操作吗?
【问题讨论】:
-
std::function? -
你可以使用 std::bind 吗?
-
我会使用
enum来存储测试结果(或boolean)并使用switch/if else包含for循环,每个循环都有它们的特定功能- 因为所有函数重载在运行时之前都是已知的。 -
如果一开始就知道字符串参数,您可以将它们绑定到 std::function,然后稍后将其作为不带参数的函数调用。 godbolt.org/z/Y3xPea
-
假设唯一的输入是
true或false。现在,您需要做的就是在其上创建一个if测试,这样如果测试成功,它将开始循环使用预设变量的函数。否则,它将循环使用预设变量的另一个函数。但是,我不知道std::function和std::bind存在,但它们似乎更好 (C++) 解决方案;我的算法是适用于任何语言的通用算法。
标签: c++ call std-function