std::istream&初始化的问题

来源:互联网 发布:中电四公司怎么样 知乎 编辑:程序博客网 时间:2024/05/23 22:00

今天在项目中遇到一个小问题,记录一下,就是如何在初始化一个在类中的流引用,但是我需要我的构造函数不能传入一个流,因为我的构造函数不一定全部是需要传入流这个参数的,
示例如下:这是传统的方法,但是有时候我并不需要在构造函数传入一个流,哪该如何解决这个问题

class Test{public:    Test(int a, std::istream& s) : _myStream(s), _a(a){};    //Test(int a) : _a(a){}; 我需要的是这个,但是_myStream必须初始化private:    std::istream& _myStream;    int _a;}

解决办法:强行构造一个子类的stringstream的引用,进行初始化,我们无法强行构造一个istream的引用,因为它的copy构造函数是delete的

class Test{public:    Test(int a, std::istream& s) : _myStream(s), _a(a){};    Test(int a)     : _a(a)     ,_myStream((stringstream&(stringstream()))     {}; private:    std::istream& _myStream;    int _a;}

这个方法解决了我的问题,此后我调用Test(int a)对象就不需要强行传入一个istream对象进去,有必要的时候才会掉用Test(int a, std::stream& s)

原创粉丝点击