none
C/C++中自定义了一个类,我想让这个类的所有对象都是全局的怎么办? RRS feed

  • 问题

  • C/C++中自定义了一个类,我想让这个类的所有对象都是全局的怎么办?不管这个类的对象在哪个函数中声明的,我希望在其它函数中都能访问该对象,怎么办?请高手指点,感激万分!!!
    2010年12月20日 2:24

答案

  • 参考使用Singleton设计模式。通过该模式你可以把一个类封装成为全局唯一的。

    http://www.cppblog.com/dyj057/archive/2005/09/20/346.aspx

     


    麻烦把正确答案设为解答。
    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月20日 2:35
    版主
  • 你把static T t;移到main()外面就可以了.

     

    static T t;
    int main(){
    display();
    return 0;
    }


    0xBAADF00D
    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月20日 5:49
    版主
  • class X

    {

    public:

        static int a,b,c;

    }

    a,b,c都是全局的可以通过X::a,X::b, X::c来访问


    0xBAADF00D
    • 已标记为答案 Daneill 2010年12月20日 6:12
    • 取消答案标记 Daneill 2010年12月20日 6:12
    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月20日 6:05
    版主
  • 您好 Daneill

    您可以用以下方法让我们自定义的类的所有对象都是全局的。

    1stdafx.h中加入类的头文件
    2.stdafx.cpp中加入类的定义 如:CMyClass g_class;
    3.在你程序的app类中,如果CTestProjectApp类的头文件的开头处加上 extern CMyClass g_clas

     

    如果您还有什么疑问,请让我知道。如果您解决了问题请把有用的回答标记为答案。

     

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月22日 2:59
    版主

全部回复

  • 用public关键字即可

    class Demo
    {
    public:
      //具体内容
    }
    
    
    2010年12月20日 2:31
  • 参考使用Singleton设计模式。通过该模式你可以把一个类封装成为全局唯一的。

    http://www.cppblog.com/dyj057/archive/2005/09/20/346.aspx

     


    麻烦把正确答案设为解答。
    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月20日 2:35
    版主
  • #include<iostream>
    
    using namespace std;
    
    class T{
    public:
    	int data;
    };
    
    void display(){
    	cout<<t.data<<endl;
    }
    
    int main(){
    	static T t;
    	display();
    	return 0;
    }
    我希望在display中访问main中定义的对象t,如果不用传参数的方法,请问怎么办?即希望T的所有对象实例都是全局的,请教怎么办?有全局类型这种概念吗?请高手指教,感激万分!!!!
    • 已合并 lucy-liuModerator 2010年12月22日 3:16 帖子问的问题本质一样。同一个OP
    2010年12月20日 4:10
  • 你把static T t;移到main()外面就可以了.

     

    static T t;
    int main(){
    display();
    return 0;
    }


    0xBAADF00D
    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月20日 5:49
    版主
  • class X

    {

    public:

        static int a,b,c;

    }

    a,b,c都是全局的可以通过X::a,X::b, X::c来访问


    0xBAADF00D
    • 已标记为答案 Daneill 2010年12月20日 6:12
    • 取消答案标记 Daneill 2010年12月20日 6:12
    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月20日 6:05
    版主
  • 您好 Daneill

    您可以用以下方法让我们自定义的类的所有对象都是全局的。

    1stdafx.h中加入类的头文件
    2.stdafx.cpp中加入类的定义 如:CMyClass g_class;
    3.在你程序的app类中,如果CTestProjectApp类的头文件的开头处加上 extern CMyClass g_clas

     

    如果您还有什么疑问,请让我知道。如果您解决了问题请把有用的回答标记为答案。

     

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Daneill 2010年12月22日 11:41
    2010年12月22日 2:59
    版主
  • 非常感谢向立天、SplendourG、Vonger、Lucy,谢谢你们!
    2010年12月22日 11:44