我要在3个类里都使用一个类的对象比方 我在CBB里声明CA A;这个A我想在CBB,CCC,CDD里都可以使用可是我在CBB里声明的A到别的里不可以用了我这样写是否可以extern CBB A;那?有什么办法那?请说详细的谢谢!

解决方案 »

  1.   

    既然大家都用
    那就写一个基类
    放这个A
    STATIC CA A;
    然后其他的(CBB,CCC,CDD)继承这个基类
      

  2.   

    我认为你只是想让该类在整个程序中只有一个实例对象吧???这样的话就很简单啊,你可以使用设计模式中最著名的模式之一:单例设计模式来实现这个功能原理就是通过一个接口获得该对象在全局中的实例,而将该对象的构造函数设置成私有的以禁止创建该对象参照代码:
    //.h
    class Cxxxzzz //...
    {
    public:
    static Cxxxzzz* GetInstance();
    private:
    Cxxxzzz();
    static Cxxxzzz* instance; //单例实例
    };//.cpp
     Cxxxzzz* Cxxxzzz::instance = 0;
     Cxxxzzz* Cxxxzzz::GetInstance()
     {
      if(instance == 0)
      {
      instance = new Cxxxzzz;
      }
      return instance;
     }
      

  3.   

    那将那三个类的构造函数改一下,构造的时候传递这个类对象的指针进去,然后保存到那三个类的私有成员里,应该可以解决你的问题吧?如果像你所说,用全局变量的话,虽然方便,但是确破坏了类的封装性====CSDN 小助手 V2.0 2005年10月16日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
    下载:http://szlawbook.com/csdnv2/csdnv2.rar为神六喝彩,向所有科技工作者致敬!
    拒绝日货。
      

  4.   

    xqk(夏乾坤)的方法不错你可以new 一个CA出来
    然后大家用
      

  5.   

    可我在StdAfx.h里NEW一个出错呀
    mac_serverDlg.obj : error LNK2005: "class CSocketClient * m_sck" (?m_sck@@3PAVCSocketClient@@A) already defined in InitShow.obj
    StdAfx.obj : error LNK2005: "class CSocketClient * m_sck" (?m_sck@@3PAVCSocketClient@@A) already defined in InitShow.obj
    StdAfx.obj : error LNK2005: "class CSocketServer * m_srvsck" (?m_srvsck@@3PAVCSocketServer@@A) already defined in InitShow.obj
    Debug/mac_server.exe : fatal error LNK1169: one or more multiply defined symbols found
      

  6.   

    用 extern 声明的时候不要定义数值 , 否则会出现 这样的链接错误extern 只是声明
      

  7.   

    请问我在StdAfx.h里 CSocketServer* m_s=new CSocketServer;
    CSocketClient* m_c=new CSocketClient;
    这样生成可以吗?
      

  8.   

    请问我在StdAfx.h里
    这样生成可以吗?
    static CSocketServer* m_sk=new CSocketServer();
    static CSocketClient* m_ck=new CSocketClient();