2011-04-07 68 views
0

当我尝试在MainFrame类中创建一个静态分离器时出现下一个错误。 错误C2653:'CMyView':不是类或名称空间名称c:\ projects \ mt \ mt \ mainfrm.cpp 200 1 MTSplitter CreateStatic问题

我试图添加#include“MainFrm.h” MainFrm.cpp,但它使CMyDoc发生另一个错误。我如何解决这个问题?

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, 
    CCreateContext* pContext) 
{ 
    //calculate client size 
    CRect cr; 
    GetClientRect(&cr); 

    if (!m_wndSplitter.CreateStatic(this, 1, 2)) 
     return FALSE; 

    if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(cr.Width()/2, cr.Height()), pContext) || 
     !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView), CSize(cr.Width()/2, cr.Height()), pContext)) 
    { 
     m_wndSplitter.DestroyWindow(); 
     return FALSE; 
    } 
    return TRUE; 
} 

回答

2

您需要在MainFrm.cpp文件中包含定义CMyView的标题。确保你没有在MyDoc.h中包含MyView.h,在MyView.h中没有包含MyDoc.h。这将创建一个循环依赖;如果需要使用前向声明,以避免这种循环。

+0

我在MainFrm.cpp中添加了#include“MTCDoc.h” #include“MTCView.h”,它起作用。 – baraban 2011-04-07 19:06:57