NND怎么一直说我编译有问题....错误
1 error C2065: “NodeNode”: 未声明的标识符 d:\mybrowser\MainFrm.h 64 MyBrowser做的浏览器,准备实现多标签现在有问题,想不明白问题出在哪?请大家指点一下~~~~在MainFrm.h中定义:
CList <NodeNode,NodeNode&> Listview;
//这句一直有问题,但改为下面这个就编译通过
CList <int,int&> Listview;在StdAfx.h中定义
struct NodeNode //主要是保存视图,切换时显示
{
CMyBrowserView* pOldView;
CMyBrowserView* pCurrView;
};自己换了几种方法,但NodeNode就是不识别

解决方案 »

  1.   

    这个结构在stdafx.h的哪个位置定义的?
      

  2.   

    另外添加一个文件extend.h

    struct NodeNode //主要是保存视图,切换时显示 

    CMyBrowserView* pOldView; 
    CMyBrowserView* pCurrView; 
    }; 
    加入
    看看运行时是否还报错
      

  3.   

    stdafx.h文件如下:
    ////////////////#if !defined(AFX_STDAFX_H__1923D407_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_)
    #define AFX_STDAFX_H__1923D407_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers#include <afxwin.h>         // MFC core and standard components
    #include <afxext.h>         // MFC extensions
    #include <afxdisp.h>        // MFC Automation classes
    #include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
    #ifndef _AFX_NO_AFXCMN_SUPPORT
    #include <afxcmn.h> // MFC support for Windows Common Controls
    #endif // _AFX_NO_AFXCMN_SUPPORT
    #include <afxhtml.h> // MFC HTML view support
    #include <afxtempl.h>
    #include "MyBrowserView.h"#define WM_CREATEVIEW WM_USER+1
    #define WM_CHANGVIEW WM_USER+2
    #define WM_CLOSEVIEW WM_USER+3struct NodeNode
    {
    CMyBrowserView* pOldView;
    CMyBrowserView* pCurrView;
    };//{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif 
      

  4.   

    里面定义的WM_CREATEVIEW等等,都能识别....为什么NodeNode不能识别...奇怪呀
      

  5.   

    是不是存在头文件重复包含的问题
    CMyBrowserView 中是否也包含了stdAfx.h?
      

  6.   

    CMyBrowserView.cpp 中包含的,,,难道说...移动CMyBrowserView.h中的
      

  7.   

    struct NodeNode 

    CMyBrowserView* pOldView; 
    CMyBrowserView* pCurrView; 
    }; #include "MyBrowserView.h" #define WM_CREATEVIEW WM_USER+1 
    #define WM_CHANGVIEW WM_USER+2 
      

  8.   

    回7楼
    stdAfx.h中
    必须#include "MyBrowserView.h"在struct NodeNode 结构前...
    因为struct NodeNode 结构中用到MyBrowserView.h文件中的CMyBrowserView类
      

  9.   

    CList <NodeNode&,NodeNode&> Listview; 应该这样.lz.
      

  10.   

    回9楼,按你这样定义了一下,还是有错,错误 error C2065: “NodeNode”: 未声明的标识符其实在这里都找不到NodeNode
    把这句给注册掉
    //CList <NodeNode,NodeNode&> Listview;
    然后再这样定义
    NodeNode abdd;
    就抱错错误 error C2146: 语法错误 : 缺少“;”(在标识符“abdd”的前面) d:\mybrowser\MainFrm.h 67 MyBrowser
    我自己真晕了,,,不知道错误在哪???
      

  11.   

    直接用NodeNode定义一个变量可以吗?
    把结构体放到MainFrm.h里试试
      

  12.   

    是在编译MyBrowser.cpp出的错? 
    不是nodenode的问题,可能还是别的地方的问题
      

  13.   

    回11楼结构也放在MainFrm.h中也不行啊,,,还是编译不成功...这里面有几个嵌套,此问题很晕很晕....
      

  14.   

    MyBrowserView.h
    // MyBrowserView.h : interface of the CMyBrowserView class
    //
    /////////////////////////////////////////////////////////////////////////////#if !defined(AFX_MYBROWSERVIEW_H__1923D40D_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_)
    #define AFX_MYBROWSERVIEW_H__1923D40D_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000#include "MyBrowserDoc.h"
    #include "MainFrm.h"
    #include "afxext.h"
    //#include "ModelessDlg.h"
    //#define WM_CLOSE_CHILDWINDOW WM_USER+118class CMyBrowserView : public CHtmlView
    {
    protected: // create from serialization only
    CMyBrowserView();
    DECLARE_DYNCREATE(CMyBrowserView)// Attributes
    public:
    //CModelessDlg * m_MDlg;
    CMyBrowserDoc* GetDocument();
    public:
    virtual BOOL CreateControlSite(COleControlContainer* pContainer, 
       COleControlSite** ppSite, UINT nID, REFCLSID clsid);
    // Operations
    public:// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMyBrowserView)
    public:
    virtual void OnDraw(CDC* pDC);  // overridden to draw this view
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    virtual void OnDocumentComplete(LPCTSTR lpszURL);
    virtual BOOL PreTranslateMessage(MSG* pMsg);
    virtual void OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel);
    virtual void OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel);
    virtual void OnCommandStateChange(long nCommand, BOOL bEnable);
    // virtual void OnNavigateComplete2(LPCTSTR strURL);
    virtual BOOL OnAmbientProperty(COleControlSite* pSite, DISPID dispid, VARIANT* pvar);
    virtual void BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL,
    VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData,
    VARIANT* Headers, VARIANT_BOOL* Cancel);
    protected:
    virtual void OnInitialUpdate(); // called first time after construct
    //}}AFX_VIRTUAL// Implementation
    public:
    HWND m_active;
    int m_closetime;
    CStringArray strarray;
    virtual ~CMyBrowserView();
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endifprotected:// Generated message map functions
    protected:
    //{{AFX_MSG(CMyBrowserView)
    afx_msg void OnGoback();
    afx_msg void OnGofoward();
    afx_msg void OnStop();
    afx_msg void OnUpdate();
    afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
    afx_msg void OnTimer(UINT nIDEvent);
    // afx_msg LRESULT OnCloseWindow();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    private:
    void AlterRegedit(CString);
    BOOL CheckDefaultBrowser();
    public:
    // bool m_bResizeWindow;
    afx_msg void OnParentNotify(UINT message, LPARAM lParam);// afx_msg void OnSize(UINT nType, int cx, int cy);
    // afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    // afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    afx_msg void OnBtnSaft();
    afx_msg void OnBtnClear();
    };#ifndef _DEBUG  // debug version in MyBrowserView.cpp
    inline CMyBrowserDoc* CMyBrowserView::GetDocument()
       { return (CMyBrowserDoc*)m_pDocument; }
    #endif///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_MYBROWSERVIEW_H__1923D40D_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_)
      

  15.   

    或者把
    #include "MyBrowserView.h" 
    换成
    class CMyBrowserView;
      

  16.   

    MyBrowserView.h里包含 
    #include "MainFrm.h"
    出现嵌套调用了,
    删除stdafx.h里的#include "MyBrowserView.h"  
    在mainfrm.h里添加
    class CMyBrowserView; 
    struct NodeNode 

    CMyBrowserView* pOldView; 
    CMyBrowserView* pCurrView; 
    }; 
    应该就可以了.
      

  17.   

    真是辛苦你了,,,谢谢已按你16楼的方法,但还是同样的错,,,关键是找不到NodeNode...