作毕业设计,老师让用vc,以前没学过,一个小问题让我郁闷了一晚上。单文档project,MainFrm类 testView类 还新加了个player类。
我想声明一个player类的全局对象,以便在MainFrm和testView两个类中都能操作。
求教这个声明应该放在哪里??
我把player p;放在MainFrm.h中,编译提示class player  p" (?p@@3VPlayer@@A) already defined in MainFrm.obj错误。郁闷了。

解决方案 »

  1.   

    放到MainFrm类中去作为成员好了,View类中只要获得MainFrame的指针pFrame,用pFrame->p不就行了。或者就在MainFrm.cpp中声明player p;,然后再View类的.cpp文件开头声明外部变量
    extern player p;
    也可以啊
      

  2.   

    哈哈,果然有高手呀,嗯楼上正解。再多讨论一下好吗?
    class player  p" (?p@@3VPlayer@@A) already defined in MainFrm.obj错误是怎么回事谁知道?还有VC的工程中有没有约定的声明全局变量的地方?像是stdafx或者testcpp.cpp之类?
      

  3.   

    楼上的错误是由于多次引用同一个头文件造成的,
    头文件应该如下格式:
    #ifndef xxxxxxxxxxxxxxxxx
    #define xxxxxxxxxxxxxxxxx//开始头文件内容
    #include .....
    .....
    .....
    //结束头文件
    #endif
      

  4.   

    放在DOC文档类中定义好了,在VIEW和MainFrm都可以访问
      

  5.   

    把该变量放到该应用程序类的头文件中的 attribute 处。然后,在程序的任何地方,你都可以用下面的方法来访问该变量:
        CMyApp *app = (CMyApp *)AfxGetApp();
        app->MyGlobalVariable = ...
      

  6.   

    如果在全局在本文件中,则从该变量定义处到文件尾有效,如果要在别的文件中引用该变量,可以把该变量的用extern 进行声明.