不知道我這樣命名這個問題清楚不~
MFC裡面遇到一個問題,我把它簡化為一個控制台程序:
A類定義了B類的對象,B類定義了A類的對象的指針(this),並想通過它訪問A類的成員函數
解決代碼如下:
#include <iostream>
using namespace std;
class A;
class B
{
public:
A* pa;
void funb();
};
class A
{
public:
B b;
A()
{
b.pa = this;
}
void funa()
{
cout << "執行funa函數" << endl;
}
};
void B::funb()
{
pa->funa();
}
void main()
{
A a;
a.b.funb();
}
運行結果:
執行funa函數
Press any key to continue_
找到了,在MFC中此問題的處理辦法:
假設MFC工程為Test
在CTestDlg.h裡面添加A.h,構造A類的一個對象
在A類頭文件中增加一個CTestDlg的對象的指針,在頭文件裡A類類名前加class CTestDlg的聲明,然後再在A.cpp裡面加(注意順序!):
#include “Test.h”
#include “A.h”
#include “TestDlg.h”