关于ifstream:错误'std :: ios_base :: ios_base(const std :: ios_base&)'是私有的

时间:2015-10-15 05:17:48

标签: c++ fstream c++98

当我尝试执行以下操作时,我在标题中收到错误。

class Test
{
private:
    std::ifstream File;


public:
    Test();

};

Test :: Test(){}

我知道堆栈上有很多关于这个问题的线程。我知道我可以通过像

这样简单的事情来解决我的问题
std::ifstream *File;

我发布此问题的原因是因为我的导师告诉我,我应该能够在不修改我发布的第一个代码块的情况下执行此操作。我已经对此进行了研究,但我还没有发现任何可以表明我能做到的事情。有什么想法吗?

按要求。

class Test
{
private:
    std::ifstream File;


public:
    Test();
};

Test::Test() {}

int main()
{
Test test = Test();
return 0;
}

这是我无法编译的例子。

1 个答案:

答案 0 :(得分:1)

该行

Test test = Test();

是一个问题,因为std::ifstream没有复制构造函数或复制赋值运算符。使用:

Test test;

如果您有C ++ 11编译器,还可以使用:

Test test{};