【发布时间】:2011-11-03 17:30:49
【问题描述】:
我们的一个类提供了 tr1::function 回调对象。但是,当我尝试为其分配一个成员函数时,我得到了一个编译器错误。
以下示例未经测试,仅用于说明:
Foo.h:
class Foo()
{
public:
Foo();
std::tr1::function<void (int x)> F;
}
Bar.h:
class Bar()
{
public:
Bar();
Foo* foo;
void HookUpToFoo();
void Respond(int x);
}
Bar.cpp:
Bar()
{
this->foo = new Foo();
this->HookUpToFoo();
}
void Bar::HookUpToFoo()
{
this->foo->F = &Bar::Respond; // error
}
void Bar::Respond(int x)
{
// do stuff
}
我们得到的编译器错误是指外部参照包装中的一行,并且是 错误 1 错误 C2296: '.*' : 非法,左操作数的类型为 'int' C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xrefwrap 64
..我在分配代表时做错了什么?我想走更现代的路线,使用 tr1::function 而不是函数指针。
【问题讨论】: