如何访问会员? MFC
Posted
技术标签:
【中文标题】如何访问会员? MFC【英文标题】:how to acces member? MFC 【发布时间】:2013-11-29 22:55:56 【问题描述】:我将 A 类包含在 B 中,女巫包含在 C 中。
在 A 类中,我有一个 ExamItemStates 函数。 我可以从 B 类访问它: 声明为 Public 的 ExamItemStates 函数:
BOOL ExamItemStates(int nItem, DWORD dwStates) const;
B类头文件:
class B : public CDialogEx
DECLARE_DYNAMIC(B)
public:
B(CWnd* pParent = NULL); // standard constructor
enum IDD = IDD_B ;
CReportCtrl m_wndList;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
;
//B.cpp
void B::DoDataExchange(CDataExchange* pDX)
DDX_Control(pDX, IDC_LIST1, m_wndList);
CDialogEx::DoDataExchange(pDX);
BOOL B::OnInitDialog()
CDialogEx::OnInitDialog();
if (m_wndList.ExamItemStates(2, RC_ITEM_CHECKED))
AfxMessageBox(L"Please write correct name!");
UpdateData(FALSE);
return TRUE;
我需要从 C 类访问它。我该怎么做?
【问题讨论】:
各位大神可以解释一下否决投票吗? 这是非常基本的 C++。您的 C++ 书籍将涵盖类层次结构、访问修饰符和虚拟成员。提示:您从C
访问B
的成员就像您从B
访问CDialogEx
的成员一样。你已经实现了后者。你本质上是在问:我如何解决我已经解决的问题?这可能解释了反对票。
【参考方案1】:
尝试使用protected
而不是private
,方法一般应该是public:
:
例如
class Foo
protected:
int a, b;
public:
void Method1();
;
提供你的头文件(带有类的那个)以获得更多解释。
这是一个可派生类的典型方案:
class Foo
private:
// elements that cannot be inherited (you cannot use them in the child classes) and cannot be accessed from outside of the class
protected:
// elements that can be inherited, but cannot be accessed from outside of the class
public:
// elements that can be inherited and accessed outside the class
;
示例代码:
class A
protected:
void DerivableMethod();
private:
int AccessibleOnlyInClassA;
;
class B : public A
protected:
void AnotherProtectedMethod();
private:
int AccessibleOnlyInClassB;
;
class C : public B
public:
void MethodInClasC()
DerivableMethod();
;
【讨论】:
我解决了我的问题。请不要对我的问题投反对票,这很重要。所以我不知道如何找到问题。你能帮帮我吗? @Klasik 我无法评论你的问题,所以我在这里 - 提供所有类的代码 - 最重要的是 A 类。在那里你需要设置要保护的东西。 好的,据我所知,我必须在 A 类中将 ExamItemStates 设置为受保护。所以在 C 类中必须如何看起来像代码以及数据交换的内容......对我来说有问题,因为我无法声明数据交换在两个班级相同。你能写一些我想我会更好理解的示例代码吗? Dzienkje ;) 我明天会尝试解决它。因为今天我的大脑不工作了。以上是关于如何访问会员? MFC的主要内容,如果未能解决你的问题,请参考以下文章