我想通过传递函数指针来获得像这样的工作。我知道你只需要将第一个类的指针传递给第二个类,然后让第二个类通过指针触发第一个类的成员函数。但我不希望第二堂课依靠了解第一堂课是谁。这更像是我想要达到的代码风格。由于使用函数指针在类之间传递数据
//////////////////////////////////////////////////
class Second
{
public:
Second::Second(void (*SecondTriggered)(void));
};
Second::Second(void (*SecondTriggered)(void))
{
SecondTriggered();
}
//////////////////////////////////////////////////
class First
{
public:
First::First();
void SecondTriggered();
Second *second;
};
First::First(){
printf("first class was created");
second = new Second(SecondTriggered);
}
void First::SecondTriggered(){
printf("second class was created and responded");
}
/////////////////
int main()
{
First *first = new First();
}
我得到这个错误:
error C3867: 'First::SecondTriggered': function call missing argument list;
use '&First::SecondTriggered' to create a pointer to member
任何想法。
[什么是你正在尝试的根本问题解决](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)? – Johnsyweb 2012-04-24 03:47:36
使第二个类能够触发First类的成员函数,但不发送指向整个类的指针,只是函数。 – aquawicket 2012-04-24 03:49:48
@dasblinkenlight啊,没有意识到发生在同一时间。也删除了我的评论。 – smocking 2012-04-24 12:51:20