【问题标题】:Error C2248 in Fstream.hFstream.h 中的错误 C2248
【发布时间】:2011-04-19 18:17:01
【问题描述】:

这是我收到的错误消息:

错误 C2248: 'std::basic_ios<_elem>::basic_ios' : 无法访问私有成员 在课堂上声明 'std::basic_ios<_elem>' C:\Program 文件\Microsoft Visual Studio 10.0\VC\include\fstream

这是它说错误的那一行

template<class _Elem,
    class _Traits> inline
    void swap(basic_ofstream<_Elem, _Traits>& _Left,
        basic_ofstream<_Elem, _Traits>& _Right)
    {   // swap _Left and _Right basic_ofstreams
    _Left.swap(_Right);
    }


这是我访问 fstream 的代码

char* stringPointer =  (char*) Marshal::StringToHGlobalAnsi(saveFileNameString).ToPointer();


ofstream sessionFile;
sessionFile.open(stringPointer, std::ios_base::in);
 Marshal::FreeHGlobal(IntPtr(stringPointer));`

提前谢谢你!!!!

【问题讨论】:

    标签: visual-studio c++-cli fstream ofstream


    【解决方案1】:

    问题不在于 Fstream.h,而在于您的代码。

    检查您是否没有将类的私有成员变量传递给 ofstream 或其他方法。

    【讨论】:

    • 我正在检查,我真的什么也没看到
    • 明白了!!!!您不能将 ofstream 直接传递给函数ofstream sessionFileOutput; sessionFileOutput.open(stringPointer);//, fstream::out); Marshal::FreeHGlobal(IntPtr(stringPointer)); XMLExport* exportingX = new XMLExport(); exportingX-&gt;saveSessionLurch(saveFileNameString, &amp;sessionFileOutput, );
    【解决方案2】:

    我刚刚遇到了这个问题,感谢 Luron 的评论,我想通了。

    我发布解释以防有人遇到同样的问题:

    流对象(ostream、istream 和派生类)没有复制构造函数,将这些对象之一传递给函数将调用复制构造函数,因此会导致错误。

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      相关资源
      最近更新 更多