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