簡體   English   中英

使用初始化列表初始化類中的std :: ofstream

[英]Initialize a std::ofstream in a class using initializer list

我想使用初始化列表在構造函數中初始化私有std::ofstream (例如,在main中打開的文件)。 我有以下代碼:

class MyClass{
    std::ofstream ofs;
public:
    MyClass(const std::ofstream &ofs): ofs(ofs) { }
};

我得到以下編譯錯誤:

error C2248: 'std::basic_ofstream<_Elem,_Traits>::basic_ofstream' : cannot access private member declared in class 'std::basic_ofstream<_Elem,_Traits>'
      with
      [
          _Elem=char,
          _Traits=std::char_traits<char>
      ]
      c:\program files (x86)\microsoft visual studio 11.0\vc\include\fstream(1034) : see declaration of 'std::basic_ofstream<_Elem,_Traits>::basic_ofstream'
      with
      [
          _Elem=char,
          _Traits=std::char_traits<char>
      ]

這里發生了什么事?

看看cppreference

basic_ofstream( const basic_ofstream& rhs) = delete;    (5)     (since C++11)

復制構造basic_ofstreambasic_ofstream

可能您使用的是pre-c ++ 11編譯器,它在庫中標記為private

暫無
暫無

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

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