私は C++ でカーネルを作成しようとしていますが、OS 開発の初心者です。現在、モニターに表示するように実装cout
していますが、いくつかの問題に直面しています。私が尋ねている質問がばかげていることは知っていますが、私はC ++の初心者でもあります。
write
システム関数を呼び出して画面に表示する OStream クラスを作成しました。その基本クラスは私の 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 モジュールでも同じことが起こっています。
ですから、この種の問題を解決するのを手伝ってください。私を助けてください。どんな助けでも大歓迎です。ありがとうございました。