我想通過傳遞函數指針來獲得像這樣的工作。我知道你只需要將第一個類的指針傳遞給第二個類,然後讓第二個類通過指針觸發第一個類的成員函數。但我不希望第二堂課依靠了解第一堂課是誰。這更像是我想要達到的代碼風格。由於使用函數指針在類之間傳遞數據
//////////////////////////////////////////////////
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