エラーは、display
またはwindow
パラメータのいずれかXMapWindow()
が正しくないことを示しています。
特にとへの呼び出しの結果については、コードにさらにエラーチェックを含める必要がありXOpenDisplay
ますXCreateWindow
。
私が見ることができる唯一の明らかなエラーは、CWBackPixel
フラグをに渡しているが、パラメーターを初期化していないXCreateWindow
ままにしていることです。attributes
プレーンCとは異なり、C ++は、宣言されたときに構造体のメモリの内容をクリアしません。
編集-もちろん、私は本当に目がくらむほど明白なエラーを見逃しました-コンストラクター内のすべてのクラスメンバー変数を誤って再宣言しました。それがあなたのスコープの問題になります。コンストラクター内のすべての割り当てからタイプ名を削除する必要があります。例:
MyWindow::MyWindow()
{ //ctor
display = XOpenDisplay(NULL);
visual = XDefaultVisual(display, 0);
depth = XDefaultDepth(display, 0);
window = XCreateWindow(display, XRootWindow(display, 0), 0, 0, MyWindow::default_width, MyWindow::default_height, 16, depth, InputOutput, visual, CWBackPixel, &attributes);
XStoreName(display, window, MyWindow::default_caption.c_str());
XSelectInput(display, window, ExposureMask | KeyPressMask | KeyReleaseMask);
}