简体   繁体   English

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

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

I want to initialize a private std::ofstream (say, to a file opened in main ) in a constructor using an initializer list. 我想使用初始化列表在构造函数中初始化私有std::ofstream (例如,在main中打开的文件)。 I have the following code: 我有以下代码:

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

and I get the following compile error: 我得到以下编译错误:

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>
      ]

What's happening here? 这里发生了什么事?

Take a look at cppreference 看看cppreference

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

It is not possible to copy construct a basic_ofstream . 复制构造basic_ofstreambasic_ofstream

Possibly you are using pre-c++11 compiler and it is marked as private in the library. 可能您使用的是pre-c ++ 11编译器,它在库中标记为private

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在类的初始化器列表中初始化std :: vector - Initialize std::vector in class's initializer list 在类的成员初始化器列表中初始化std :: tuple - Initialize std::tuple in member initializer list of a class 使用std :: initializer_list初始化类/结构内的容器 - Initialize a container inside a class/struct with std::initializer_list 如何在构造函数初始值设定项列表中初始化std :: unique_ptr对象的类成员std :: vector? - How do I initialize a class member `std::vector` of `std::unique_ptr` object in the constructor initializer list? 我可以使用 std::initializer_list 而不是大括号封闭的初始化程序来初始化数组吗? - Can I initialize an array using the std::initializer_list instead of brace-enclosed initializer? 用std :: initializer_list初始化矩阵 - Initialize a matrix with std::initializer_list 如何使用初始化列表来初始化 std::variant? - How to use initializer list to initialize std::variant? c++ 使用构造函数参数在初始化列表中初始化 std::array of std::arrays - c++ initialize std::array of std::arrays in the initializer list using constructor parameters 为什么不能从初始化列表初始化我的类,即使它派生自 std::list? - Why can't initialize my class from an initializer list even if it derives from std::list? 如何在类的初始化列表中初始化 std::array 而不对数组的大小进行硬编码 - How to initialize an std::array in the initializer list of a class without hardcoding the array's size
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM