绑定功能问题
我使用 boost (信号 + 绑定)和 c++ 来传递函数引用。这是代码:
#define CONNECT(FunctionPointer) \
connect(bind(FunctionPointer, this, _1));
我这样使用:
class SomeClass {
void test1() {}
void test2(int someArg) {}
SomeClass() {
CONNECT(&SomeClass::test1);
CONNECT(&SomeClass::test2);
}
};
第二个测试函数绑定有效(test2),因为它至少有一个参数。第一次测试时出现错误:
‘void (SomeClass::*)()’ is not a class, struct, or union type
为什么我无法传递没有参数的函数?
I'm using boost (signals + bind) and c++ for passing function reference. Here is the code:
#define CONNECT(FunctionPointer) \
connect(bind(FunctionPointer, this, _1));
I use this like this:
class SomeClass {
void test1() {}
void test2(int someArg) {}
SomeClass() {
CONNECT(&SomeClass::test1);
CONNECT(&SomeClass::test2);
}
};
Second test function binding works (test2), because it has at least one argument. With first test I have an error:
‘void (SomeClass::*)()’ is not a class, struct, or union type
Why I don't able to pass functions without arguments?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
_1
是一个占位符参数,表示“替换为第一个输入参数”。方法test1
没有参数。创建两个不同的宏:
但请记住宏是邪恶的 。
并像这样使用它:
_1
is a placeholder argument that means "substitute with the first input argument". The methodtest1
does not have arguments.Create two different macros:
But remember macros are evil.
And use it like this: