我无法使用我的类创建对象

I can't create an object with my class

本文关键字:我的 创建对象      更新时间:2023-10-16

我想创建一个类,它具有ostream的所有功能和我添加的一些功能。我添加的功能因为我甚至还没有开始写它们,所以丢失了一个错误:(

这是我的源代码

#include "stdafx.h"
#include "iostream"
using namespace std;
class my_ostream : ostream {};
int main() {
    my_ostream my_cout;    // my_cout is underlined
    my_cout << "Hello World!";
}

这里是我得到的错误

IntelliSense: the default constructor of "my_ostream" 
cannot be referenced -- it is a deleted function

我知道这意味着什么,但是默认构造函数应该是可访问的,因为ostream中有一个并且它是继承的。那我为什么不能用呢因为我觉得我也应该能…?: o

感谢您阅读<3并帮助我解决这个简单的问题

亚历克斯

这有点麻烦(可能真的很麻烦),但如果您可以容忍两个输出类使用相同的输出缓冲区,OP就可以开始竞争了。如果您愿意,可以窃取cout的缓冲区,然后将cout指向另一个缓冲区,以防止交叉污染。这可能会给那些期待好的计算工作的人带来令人讨厌的惊喜,所以它可能比缓冲区共享更糟糕。

#include <iostream>
class my_ostream: public std::ostream
{
public:
    my_ostream():std::ostream(std::cout.rdbuf())
    {
    }
    //extra functionality goes here
};
int main(int argc, char * argv[])
{
    my_ostream my_cout;    // my_cout is underlined
    my_cout << "My Hello World!" <<std::endl;
    std::cout << "cout Hello World!" <<std::endl;
}