簡體   English   中英

在C ++中使用全局變量

[英]Usage of Global variables in 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
   ..
   ..
};

我必須添加另一個審計結構,以跟蹤成功處理的記錄和錯誤的記錄。 處理完所有文件后,此審核結構將加載到數據庫中。

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應該是Audit的父級(例如,它應該保持其生命周期),但是CurrentFile應該在構造函數中獲取Audit的實例,以便可以在其中存儲計算結果。 在兩種情況下,如果您打算實施多任務,請多加注意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM