#include <iostream>
#include <vector>
#include <functional>
struct Callable {
void operator()() {
std::cout << "hello world\n";
}
};
std::vector<std::function<void()>> cbs;
void register(std::function<void()>&& cb) { // <-- ERROR
cbs.emplace_back(std::move(cb));
}
int main() {
Callable c;
register(std::bind(std::ref(c)));
for (auto& cb : cbs) {
cb();
}
return 0;
}
在上面的C ++代码段中,g++-9
报告的错误如error: invalid declarator before 'cb'
注释行所示。
为什么会出现此错误?这是什么意思,以及如何解决?
该错误消息并不能真正帮助发现问题,但是实际上编译器说的不多。问题是register
保留的标识符。只需更改该函数的名称,您的代码即可使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句