各位前辈我遇到一个问题,想搞清楚是什么问题。请知道的朋友帮忙解答一下。下面有一个程序下载地址,程序很小,可用迅雷下载。谢谢错误代码是:error C2248: 'm_wndStatusBar' : cannot access protected member declared in class 'CMainFrame'
为什么把CMainFrame底下的变量protected:
CStatusBar m_wndStatusBar;改为public:
CStatusBar m_wndStatusBar;才能运行, 而别人的示范代码文件夹1就可以设置为protected: 呢 ,而文件夹2必须设置为public:才行呢?
注意修改的时候要保证文件夹2和文件夹1的内容一致才行。因为我想搞清楚为什么会出现这样的问题。程序下载地址:http://xasrc.ctfs.ftn.qq.com/ftn_handler/6f32d584326606306aedf77dc10a4ef1eb88166b5051aa56d3fed67edf733b3f9f59eccd472a7eb0596c520e9e5e629d07c286a01ef732fef3dca3194705b013/%E4%BF%AE%E6%94%B9%E7%A8%8B%E5%BA%8F_72948.rar?k=2464646549b29fcd8e427e581437571d55055c00510e5300485307070a1a51065056490404025d1f075c5301000555060757505c323b65e2bbdca0d6fee7971c170516650f&fr=00&&txf_fid=000000004e0373aaf9084cab98cdb7545f61996e
为什么把CMainFrame底下的变量protected:
CStatusBar m_wndStatusBar;改为public:
CStatusBar m_wndStatusBar;才能运行, 而别人的示范代码文件夹1就可以设置为protected: 呢 ,而文件夹2必须设置为public:才行呢?
注意修改的时候要保证文件夹2和文件夹1的内容一致才行。因为我想搞清楚为什么会出现这样的问题。程序下载地址:http://xasrc.ctfs.ftn.qq.com/ftn_handler/6f32d584326606306aedf77dc10a4ef1eb88166b5051aa56d3fed67edf733b3f9f59eccd472a7eb0596c520e9e5e629d07c286a01ef732fef3dca3194705b013/%E4%BF%AE%E6%94%B9%E7%A8%8B%E5%BA%8F_72948.rar?k=2464646549b29fcd8e427e581437571d55055c00510e5300485307070a1a51065056490404025d1f075c5301000555060757505c323b65e2bbdca0d6fee7971c170516650f&fr=00&&txf_fid=000000004e0373aaf9084cab98cdb7545f61996e
((CMianFrame*)AfxGetMainFrame())->m_wndStatusBar = ..;//不允许
若m_wndStatusBar为公有则可以访问
还有的时候,你在其它的文件里包括了CMianFrame头文件时,CDocument类的变量却不识别了,这时,你就得在不识别这个类的变量的文件里再包括CDocument这个头件才行.在VC6时及VS2003时常碰到这种情况.都是在别的类里包含CMianFrame头文件时出现的.现在用VS2010还没发现有这种情况.
class CMainFrame : public CFrameWnd
{
protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)变成这样就行了
class CMainFrame : public CFrameWnd
{
friend class CMyView;
protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)