
不可以
因为静态成员函数属于整个类,在类实例化对象之前就已经分配空间了,而类的非静态成员必须在类实例化对象后才有内存空间,所以这个调用就出错了,就好比没有声明一个变量却提前使用它一样。
这里我知道有两种方法
1。中转实现。
可以将doc类作为一个中转,在其他的非mainframe类中都可以使用下列语句调用 doc中的对象
CFrameWnd pFrame=(CFrameWnd )(AfxGetApp()->m_pMainWnd);
CMOfqk0028Doc pDoc=(CMOfqk0028Doc
)pFrame->GetActiveDocument();
然后用pDoc指针调用doc类中对象,
2,直接定义实现
比如 需要调用的类叫做CMyMfDlg类
在需要调用该类的时候 首先定义头文件#include “CMyMfDlgh" 然后在使用时,申明一个对象 CMyMfDlg dlg 然后就可以使用该类中的对象,比如说调用函数dlgFind(),或者调用成员变量dlgm_you
(由于情况很多种 如果还时不行可以联系我 大家一起讨论)
(1):在FTPCommandprogressh文件中定义一个CFileDlg类指针m_pDlg;
(2):在CFileDlgh文件中定义CFTPCommandprogress类m_ftpObj对象;
(3):在CFileDlgcpp文件中的OnInitDialog()函数中添加下面一行代码
m_ftpObjm_pDlg = this ;
(4):在FTPCommandprogresscpp文件中就可以使用m_pDlg指针去调用CFileDlgcpp中的所有的成员函数了。
参考一下!
静态方法只能调用静态成员,如果您的子类继承自主类,那么您要通过静态方法调用主类中的成员,那么您只能在静态成员中保存当前类的实例对象,例如像单例模式的样式。如下所示:
class mainclass {
public:
int fn() {
return 1;
}
mainclass() {
}
};
class childclass :public mainclass {
private:
static childclass mInstance;
childclass() {
}
public:
static childclass getInstance() {
if (mInstance == null) {
mInstance = new childclass();
}
return mInstance;
}
static fn2() {
childclassgetInstance()fn();
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)