我正在尝试用 c++ 编写内核,并且我是操作系统开发的初学者。现在我正在实现cout
在显示器上显示,但我遇到了一些问题。我知道我问的问题很愚蠢,但我也是 C++ 的新手。
我写了一个 OStream 类,它调用系统函数write
来显示在屏幕上。它的基类是我的 Video 类。此类包含在命名空间 std 中。所以主要问题是,当我创建 OStream 的对象时,它没有调用它的构造函数,因此没有调用其基类的构造函数,因此视频内存没有初始化,因此屏幕上不会显示任何内容。
这是我的代码:
/*OStream.h*/
namespace std{
class OStream:public Video{
public:
OStream();
OStream& operator<<(int);
OStream& operator<<(String);
OStream& operator<<(char *cp);
OStream& operator<<(char c);
OStream& operator<<(unsigned char *cq);
OStream& operator<<(unsigned char c1);
};
extern OStream cout;
}
/*OStream.cpp*/
namespace std{
OStream cout;
OStream::OStream(){}
OStream& OStream::operator<<(char *cp){
write(cp);
}
.
.
.
.
}
在上面的代码中,我OStream
在 OStream.cpp 文件本身中创建了一个类对象。但是,如果我在我的主模块中创建一个对象,那么它会成功调用其构造函数,但随后cout
无法正常工作。
这意味着如果我显式地创建一个对象,它可以完美地工作,但是我如何才能隐式地创建一个对象。
我的 Interrupt.cpp 模块也发生了同样的事情。
所以请帮我解决这类问题。请帮我。任何帮助将不胜感激。谢谢你。