如果你不使用#include“some.h”的话,就会说你的CSome没有定义,CSome是你自己写的CLASS吧?

解决方案 »

  1.   

    我是想在另一个类CAnother的cpp中使用CSome的,用include"some.h“出错,用CSome some;声明后编译通过。
      

  2.   

    对不起,是使用声明class CSome;
    #include"some.h"和class CSome;的异同!  ,不好意思,呵呵:Q ;
      

  3.   

    也就是说我在一个类CAnother中使用另一个类CSome,用include"some.h"出了错,但直接在CAnother的cpp中写上class CSome;后编译通过;我想知道什么时用include ,什么时候用 class xxx;这种方式
      

  4.   

    如果你在"some.h"中定义了CSome,你就不必要在"some.cpp"中定义CSome了,一般定义是在*.h,
    实现是在*.cpp
      

  5.   

    当你自己用CLASSWIZARD定义一个类后,会产生SOME.CPP SOME.H等文件,当然你的SOME类一般是继承某个类的。
    1、在你的CANOTHER.CPP中有用SOME类的地方前加include"some.h",后面在定义这个类的实例:CSOME XXX。
    2、如果你手工在CANOTHER.CPP中加CLASS CSOME::......当然就不用CLASSWIZARD定义类,就不会有SOME.CPP SOME.H等文件,也不用INCLUDE...
    但这样程序结构有点乱!
      

  6.   

    另外,用include"some.h"出了错,出什么错?
      

  7.   

    用CSome some,编译通过,调用SOME类的方法正常吗?也许你只是编译通过而已!
      

  8.   

    !!!!!我把题目写错了!!!!!!!,闹了许多不解,sorry!
    具体是这样的:
    这是一个类的hpp:#if !defined(AFX_DRAWTOOL_H__59B6E7BD_1F35_40B7_B186_C922203680B9__INCLUDED_)
    #define AFX_DRAWTOOL_H__59B6E7BD_1F35_40B7_B186_C922203680B9__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000enum DrawTool
    {
    selection,
    line,
    rect
    };
    class CDrawTool  
    {
    public:

    CDrawTool(enum DrawTool tool);
    CDrawTool();
    virtual ~CDrawTool();
    virtual void OnLButtonDown(CWorkAideView* pView, UINT nFlags, const CPoint& point); static CPtrList drawtools;
    static CDrawTool* FindTool( enum DrawTool tool);
    static CPoint pntOri;
    static BOOL mousedown;
    static CPoint pntCur;
    static CPoint pntOld;
             static enum DrawTool curtool;
    enum DrawTool m_tool;
    };#endif // !defined(AFX_DRAWTOOL_H__59B6E7BD_1F35_40B7_B186_C922203680B9__INCLUDED_)
    出的错有一条:error C2061: syntax error : identifier 'CWorkAideView'
    于是我在这个文件里加了#include “WorkAideView.h"
    编译时又错了
    ...\workaideview.h(21) : error C2143: syntax error : missing ';' before '*'
    ...\workaideview.h(21) : error C2501: 'CWorkAideDoc' : missing storage-class or type specifiers
    ...\workaideview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers后来看了msdn,看到有sample在文件前加class xxx;
    与是我就删掉了#include “WorkAideView.h",改为:class CWorkAideView;
    编译通过了!我想知道为什么,以及在什么时候用哪一个?
      

  9.   

    当你申明的是CWorkAideView* m_pView时是class CWorkAideView;
    当你申明的是CWorkAideView  m_view时是#include “WorkAideView.h"
    前者不需要编译构造函数.后者则相反.
    class CWorkAideView是告诉编译器分配一个可以指向类的指针空间给m_pView;
    但是CPP中就要加上#include “WorkAideView.h"了.