如何在另一个类中调用一个类中的函数对象?
Posted
技术标签:
【中文标题】如何在另一个类中调用一个类中的函数对象?【英文标题】:How to call object of a function in one class in another class? 【发布时间】:2016-11-07 02:35:32 【问题描述】:我在 ADialog
类中有一个函数,它有一个用户输入 x11
,我想在 BDoc
类中调用一个函数。怎么做?
.h file
#ifndef A_DIALOG_H
#define A_DIALOG_H
class ADialog : public wxDialog
public:
ADialog(wxWindow* parent, wxWindowID id, int click);
wxTextCtrl *d_x1;
void setAData();
;
#endif
.cpp 文件的一部分
void ADialog::setAData()
double x11;
d_x1->GetValue().ToDouble(&x11);
.cpp 文件的一部分
void BDoc::ATCut()
//(get the value of x11 that user inputs in this part)
【问题讨论】:
我在ADialog
中没有看到任何方法。
setAData() 不是成员函数吗?
在类声明中没有这样声明。我不知道是public
还是private
。是static
还是不是?你能发布完整的课程吗?
哦好的抱歉,它是公开的,我会编辑它
因为不是static
,所以需要BDoc
中的ADialog
实例才能从该方法中获取结果。
【参考方案1】:
在你的调用者类BDoc
中包含ADialog
类头,然后调用SetAData()
ADialog obj;
obj.SetAData();
您可以根据需要修改SetAData()
以返回x11
。
【讨论】:
我这样做了,但后来 x11 无法访问 我不能改变类型,它是无效的。我的意思是改变类型意味着改变更多的东西,所以我想知道是否有任何其他方式 @Leo001 将x11
作为成员变量并通过公共接口访问它怎么样?
@Leo001 你能直接通过d_x1
在BDoc
中获得x11
吗?
非常感谢我刚刚找到了一种方法,方法是在另一个类中声明一个指针,然后在 ADialog::setAData aswxGetApp().getPattern()->xc1=x11 中调用它【参考方案2】:
让 ADialog 类成为 BDoc 类的朋友。这样你就可以很方便的访问BDoc类中的ADialog类函数了。
【讨论】:
@Leo001 所以缺少friend
关系不是罪魁祸首。忘记这个“答案”。以上是关于如何在另一个类中调用一个类中的函数对象?的主要内容,如果未能解决你的问题,请参考以下文章