2017-07-06 19 views
-1

在實踐項目中,我學習異步/線程方法以及服務類型類的概念。我有一個指向流對象的共享指針向量,但是我不知道如何檢查該向量中的重複項。如何在共享指針向量中檢查重複的'ofstream'對象

爲了說明問題,我選擇爲我的項目的每個模塊都有一個日誌文件,但是如果爲同一個文件添加兩個ofstream對象,可能會導致輸出中發生混亂。我嘗試了幾種不同的方法來比較它們,但我無法弄清楚這樣做的標準方法。關於這個問題似乎也沒有太多的信息,或者我錯過了一些基本的東西,我會爲了失蹤而sla myself自己。

我知道'我'正在訪問向量中的對象,但似乎無法得到這個編譯。任何和所有的幫助,不勝感激。

class LoggerService 
{ 
public: 
    ... 
private: 
    ... 
    bool add_log_file(const std::string& file) 
    { 
     bool is_duplicate = false; 
     for (int i : *ofstreams_) // <------ This block. 
     { 
      if (file.c_str() == i) 
      { 
       is_duplicate = true; 
       break; 
      } 
     } 

     if (!is_duplicate) 
     { 
      return false; 
     } 
     else 
     { 
      ofstreams_.push_back(std::make_shared<std::ofstream>(file.c_str())); 
      return true; 
     } 
    } 
    ... 
    static std::vector<std::shared_ptr<std::ofstream>> ofstreams_; 
    ... 
} 

回答

2

我懷疑是否有一種標準的方式來獲得開放的流的路徑。怎麼樣,而不是一個載體,你有一個文件 - > ofstream的地圖。或者讓你自己的班級包含路徑和流,並把它們放在向量中

+0

我喜歡有地圖的想法,我會給你一個鏡頭。你能讓我知道你爲什麼要求我?我只是沒有意識到沒有任何方法來比較沒有初步數據的物流對象。 – BleuGamer

+0

我沒有-1的問題 – pm100

相關問題