在C ++中使用全局变量

时间:2013-05-09 08:46:49

标签: c++

我正在开发一个从输入目录读取文件,处理它们的应用程序     将它们加载到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
   ..
   ..
};

我必须添加另一个审核结构,以跟踪成功处理的记录和 错误的记录。在所有文件出现后,此审计结构将加载到DB中 处理。

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

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

如果我将此审计记录声明为,则可以将此审计记录设为CurrentFile(或)的成员变量 静态全局变量?

1 个答案:

答案 0 :(得分:1)

我猜,审核是某种日志?你必须就其目的做出决定。

  • 如果它是一个通用日志,其中包含存储导入状态信息的选项,则应将其设为单例(“安全”类型的全局变量)。它与OOP规则一致,但是所有感兴趣的人都可以轻松使用该课程。
  • 如果它专门用于存储有关导入状态的信息,则 可用于执行计算的对象,但应存储在上一级(例如,在包含 list <的对象中) / em>所有计算对象)。在您的情况下,FileList应该是Audit的父级(例如,它应该保持其生命周期),但是CurrentFile应该在构造函数中获得Audit的实例,以便它可以存储计算结果。如果您打算实施多任务处理,在这两种情况下都要小心谨慎。