Я пытаюсь написать ядро на c ++, и я новичок в разработке ОС. Сейчас я использую cout
для отображения на мониторе, но я столкнулся с некоторыми проблемами. Я знаю, что вопрос, который я задаю, глуп, но я тоже новичок в c ++.
Я написал класс OStream, который вызывает системную функцию write
для отображения на экране. Его базовый класс - мой класс Видео. Этот класс входит в пространство имен 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.
Так что, пожалуйста, помогите мне решить эту проблему.
Пожалуйста, помогите мне.
Любая помощь будет оценена.
Спасибо.