zoukankan      html  css  js  c++  java
  • MFC 如何在一个类中使用在其他类中定义的变量或函数

    【声明:本文的知识点来源于网络,参考网址:https://blog.csdn.net/bill_ming/article/details/7407848】

    【以下三种方法亲测有效,可以根据具体情况来选择哪一种】

    三种方法可以实现这个功能:

      1,在使用该变量的cpp文件中用external声明,在其他类中定义;
      2,在**App类中定义为public变量,在其他类中通过AfxGetApp()函数得到一个App对象指针,通过对象指针来调用;
      3,专门写一个全局类,类里面的变量和方法都声明为static。

    下面详细介绍一下这三种方式:

      第一种: 在一个cpp中声明,另外一个cpp中定义。
      对于两个类的cpp文件,比如在 A.cpp 中定义一个变量 int x ; 在 B.cpp 中需要使用变量x,那么只需要在B.cpp中用 extern int x声明外部变量就可以使用了。
      第二种: 在App类中声明一个public 成员,在其他类中使用AfxGetApp()函数得到App 对象指针,然后通过指针来访问。下面看个例子:

      Test.h:(应用程序类头文件)
      class CTestApp : public CWinApp 
      { 
       public: 
          int x; //全局变量
       int f(int y); //全局函数 
       …………
      };

      Test.cpp:(应用程序类程序文件)
      int CTestApp::f(int y) //全局函数定义 
      { 
       y++; 
       return y; 
      }
      定义在CTestApp类中的变量和函数可以在其它类中被访问。比如在视图的某函数中要访问变量x和函数f():
      void CTestView::xyz()
      { 
       CTestApp *app = (CTestApp *)AfxGetApp(); //生成指向应用程序类的指针 
       app->x = 0; //访问变量x 
       int z = app->f(1); //访问函数f() 
       …………
      }
      第三种:利用static修饰变量。

    例:
      1、添加一个没有基类的新类,设类名起为CPublic,姑且称之为公用类
      单击“Insert”菜单下的“New Class”命令,选择“Class type”为“Generic Class”,在“Name”栏中填入类名“CPublic”,单击“OK”,则新类建立完毕。

      2、在公用类中定义全局变量和全局函数,均使用static修饰,静态变量还必须在类外定义和初始化

      Public.h:(公用类头文件)
      class CPublic
      {
      public: 
        CPublic();
        virtual ~CPublic();
      public:
        static int x; //全局变量 
        static int time; //全局变量 
        static int f(int y); //全局函数 
        ………… 
       }

    在公用类中对静态变量进行初始化和定义函数体:
      Public.cpp:(公用类程序文件)
      int CPublic::x = 0; //初始化全局变量 
      int CPublic::time; //定义全局变量
      CPublic::CPublic() 
      {

      ………… 
      }

      CPublic::~CPublic() 
      {

      }

      int CPublic::f(int y) //全局函数,这里不要再加static 
      { 
        y++; 
        return y; 
      }

      2、包含公用类的头文件,使各个类都能访问它
      CPublic的头文件应包含在应用程序类的头文件中,这样在其它类中引用CPublic类时就不需要再包含了。

    Test.h:(应用程序类头文件)
      #include "Public.h" //包含公用类头文件
      class CTestApp : public CWinApp
      {
      ………… 
      };

      4、全局量的使用
      使用变量:CPublic::变量名
      使用函数:CPublic::函数()
      如在视图的某函数中访问变量x和函数f():
      void CTestView::xyz()
      { 
        CPublic::x = 0; //访问变量x
        CPublic::time = CPublic::f(1); //访问函数f()
        …………
      } 
      在其它类中访问x、time和f()的方法与此相同。

  • 相关阅读:
    Fix Installing .NET Framework 3.5 failed Error Code 0x800F0954 on Windows 10
    RHEL8安装五笔输入法
    Enable EPEL and Local Repository on RHEL8
    Why is Yum Replaced by DNF?
    检查Linux服务器是否被攻击的常用命令及方法
    IDEA 主题
    IDEA 如何显示一个类中所有的方法
    Appium 安装以及安装过程中遇到的问题
    Maven 如何发布 jar 包到 Nexus 私库
    java泛型的基本使用
  • 原文地址:https://www.cnblogs.com/fpqi/p/9516388.html
Copyright © 2011-2022 走看看