【发布时间】:2021-04-11 02:30:04
【问题描述】:
我不明白我做错了什么。我正在尝试将一个函数传递给构造函数,将该函数设置为一个变量,然后稍后调用该变量。 (如回调)
我得到的错误是“没有匹配的构造函数”,因为 void 不是回调......但我认为回调只是一个返回 void 的方法?
头文件
class Cars {
typedef void *callback();
public:
Cars(callback* method);
private:
callback* method;
void trigger();
}
类文件
Cars::Cars(callback method){
this->method = method;
}
void Cars::trigger() {
method();
}
主文件
void doSomething() {
// does something
}
Cars car = Cars(doSomething());
【问题讨论】:
-
在现代 C++ 中,您可能希望使用
std::function而不是回调函数指针。 -
@tadman —
std::function增加了相当多的开销来支持参数转换和返回类型转换。如果您不需要这些,则无需承担这些开销。 -
@PeteBecker 除非你打了数百万个电话,否则我怀疑你会注意到。
-
@tadman——如果你不需要,就不要付钱。
标签: c++