c++中全局变量的用法

Usage of Global variables in C++

本文关键字:用法 全局变量 c++      更新时间:2023-10-16

我正在开发一个应用程序,该应用程序从输入目录读取文件,处理它们并返回将它们加载到DB。两个类Filelist和CurrentFile是应用程序的一部分。类定义如下:

class Filelist
{
   //list of files
   list of files;
   // pointer to the current file
   CurrentFile *ptr
};
class CurrentFile
{
   vector<list of records>
   methods to process the records
   ..
   ..
};

我必须添加另一个Audit结构来跟踪成功处理的记录和错误的记录。该审计结构在所有文件加载到DB之后加载到DB中处理。

struct Recaudit
{
     //record to keep track of
     //Various counts
     int successcnt;
     int errorcnt;
     billedcnt;
     some other counts related to the records
};

此审计记录的数据集跨CurrentFile的多个方法。

这个审计记录可以作为CurrentFile的成员变量吗(或者)我应该将它声明为静态全局变量?

我猜,审计是某种日志?你必须决定它的目的。

  • 如果它是一个通用日志,有一个存储导入状态信息的选项,它应该被设置为单例(一种"安全"的全局变量)。它与OOP规则是一致的,但是所有感兴趣的人都可以很容易地获得该类。
  • 如果它是专门为存储有关导入状态的信息而设计的,它具有可用于执行计算的对象,但应存储在一个级别以上(例如。在对象包含列表的所有计算对象)。在您的情况下,FileList应该是审计的父类(例如:它应该维持它的生命周期),但是CurrentFile应该在构造函数中获得Audit的实例,这样它就可以在其中存储计算结果。在这两种情况下,如果你打算实现多任务处理,请谨慎处理。