少し低レベルの C++ を書くと、OS 固有のものを書かなければならないことがよくあります。例として関数を見てみましょうMessageBox()
(フレームワークがこれを行うため、素晴らしい例ではありませんが、従うのは簡単です)。
各プロジェクトが のようなカスタム サブクラスを提供する基本App
クラスがあるとしますMyApp
。OSごとに複数のブロックを持つ単一のApp::MessageBox()
メソッドを持つことができます。#ifdef
または、OS ごとのサブクラスが実装を提供する基本クラス/インターフェイスを持つこともできます。例えばAppWin32 : public App
ある意味では後者の方がきれいに思えますMyApp
が、別の意味では、正しい OS 固有の基本クラスをサブクラス化するために、醜いコードを使用する必要があることを意味します。
より良いアプローチは何ですか?