【问题标题】:Got a compilation error C2248 when accessing public member of the object theApp访问对象 theApp 的公共成员时出现编译错误 C2248
【发布时间】:2015-10-21 08:58:08
【问题描述】:

我收到编译错误 C2248:“无法访问在类 'CMyApp' 中声明的受保护成员”。变量本身被声明为公共的。我究竟做错了什么?常见吗?

我有以下代码:
CMyApp.h:

class CMyApp : public CWinAppEx
{
public:
    CVWMFCApp();
public:
    virtual BOOL InitInstance();
    virtual int ExitInstance();
public:
    BOOL m_bHiColorIcons;
    virtual void PreLoadState();
    virtual void LoadCustomState();
    virtual void SaveCustomState();
    afx_msg void OnAppAbout();
    DECLARE_MESSAGE_MAP()
    CStringList slFileContentList;
...

CMyApp.cpp:

...
CMyApp theApp;
...

CChildView.cpp:

void CChildView::OnPaint() 
{
    CPaintDC dc(this);
    CStringList slFileContentList = theApp.slFileContentList;
....

【问题讨论】:

    标签: visual-studio-2010 visual-c++ mfc


    【解决方案1】:

    如果您查看DECLARE_MESSAGE_MAP 的定义,您会发现它以

    开头
    #define DECLARE_MESSAGE_MAP() \
    protected: \
    ...
    

    所以DECLARE_MESSAGE_MAP 之后的东西也被声明为protected,因此访问问题/编译器错误消息。

    【讨论】:

    • 谢谢,原来如此!
    • @tschesseket:Asking:“请不要对您的问题或回答说“谢谢”添加评论。评论是为了要求澄清,留下建设性的批评,或添加相关但次要的附加信息 - 不是为了社交。如果您想说“谢谢”,请投票或接受该人的回答,或者只是通过为其他人的回答提供一个很好的答案来支付问题。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2015-01-06
    • 1970-01-01
    • 2010-10-14
    相关资源
    最近更新 更多