2013-05-09 70 views
0

我正在研究从输入目录中读取文件的应用程序,处理它们并将其加载到数据库中。这两个类Filelist和CurrentFile是应用程序的一部分。 这个类的定义如下。在C++中使用全局变量

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 
    .. 
    .. 
}; 

我得再添审计结构跟踪成功处理记录和 出错了记录。在处理完所有文件 后,此审计结构将加载到数据库中。

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

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

可以将此审计记录作为CurrentFile(或)的成员变量吗?是否应该将其声明为 静态全局变量?

+3

我想你想实现一个Singleton – Sindico 2013-05-09 08:48:38

+2

如果审计是针对文件列表中的每个文件都不应该是FileList的成员? – 2013-05-09 08:49:30

回答

1

我想,那审计是某种日志?你必须对其目的做出决定。

  • 如果它是一个通用的日志与存储有关的进口状态的信息的选项,它应采用一个单(一个“安全”之类的全局变量)。它符合OOP规则,但该类可轻松地提供给所有感兴趣的各方。
  • 如果它用于存储关于进口状态的信息而设计的,它具有为可用于执行计算的对象,但应存储上述一个电平(例如,在含有列表中的所有计算对象的对象)。在你的情况下,FileList应该是审计的父级(例如它应该保持它的生命周期),但CurrentFile应该在构造函数中获得一个Audit实例,以便它可以存储计算结果。在这两种情况下,如果您计划实施一项任务,请谨慎处理多任务处理。
+0

感谢您的快速回复@Spook – user1758616 2013-05-09 09:37:45