2013-05-09 74 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