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()的方法与此相同。

  • 相关阅读:
    PHP foreach 循环
    C#导出Excel时间格式问题
    vs2015 key
    C# 的Chart
    线程暂停与继续实现
    CCNA网络工程师学习进程(2)基本的网络设备
    CCNA网络工程师学习进程(1)网络的基本概述
    安卓学习进程(3)安卓开发工具的简介
    安卓学习进程(2)Android开发环境的搭建
    安卓学习进程(1)移动平台开发的简介
  • 原文地址:https://www.cnblogs.com/fpqi/p/9516388.html
Copyright © 2011-2022 走看看