#pragma onceclass CChartRoom_UDP_ServerDlg;CChartRoom_UDP_ServerDlg 这是一个对话框的类
这一句却出现在另一个类的开头  有点不解#pragma onceclass CChartRoom_UDP_ServerDlg;
class CListenSocket : public CSocket
{
public:
CListenSocket(CChartRoom_UDP_ServerDlg* pdlg);
virtual ~CListenSocket();

解决方案 »

  1.   

    这样CChartRoom_UDP_ServerDlg这个指针,系统就认识了。
      

  2.   

      意思就是跟#include "ChartRoom_UDP_ServerDlg .h"  作用是一样的囖?
      

  3.   

    昨天我也遇到了这个问题,我给你举个我那个例子吧,仔细看下,你看得懂的,我也是小白一个。
    昨天6月6号下午,我简单的做了一个非模态对话框(你懂的吧?),然后让这个可以弹出的非模态对话框上面有一个按钮,这个按钮要实现我主对话框里的某一个功能,这么说有点复杂。
    例如:我做一个定时关机小程序,主对话框有一个推迟10分钟关机按钮,而非模态对话框将在系统关机前10分钟弹出非模态框提示我即将关机,这个非模态框上面有一个按钮它的作用和主对话框的那个推迟按钮时一样的,那我这里就必须调用主对话框的按钮响应。
    问题就来了,我该如何调用呢?他们不属于一个类,而且也不能乱包含,假如你主对话框的头文件里包含了这个非模态对话框的类的头文件,你非模态的对话框头文件也要包含(#include)这个主对话框的类,那么就会出现重复包含。假如说像你这样写一个class CChartRoom_UDP_ServerDlg;那么就不需要你再包含主对话框了,自然也就不会重复包含了。。有些啰嗦,希望你明白了我也是新手
      

  4.   

    类的前置声明,比如在你这里,声明后就可以在CListenSocket 里面声明一个 CChartRoom_UDP_ServerDlg指针或引用。一般情况这时候就不会包含 CChartRoom_UDP_ServerDlg类的头文件,所以不可以声明 CChartRoom_UDP_ServerDlg对象,但是可以减少编译相关度,减少编译时间。
      

  5.   

    前置声明,因为类CChartRoom_UDP_ServerDlg的实现在类CListenSocket 之后。
    在类CListenSocket 中使用了类CChartRoom_UDP_ServerDlg,所以需要先声明一下告诉类CListenSocket关于类CChartRoom_UDP_ServerDlg已经存在的消息。祝好运