次のような状況があります
class Interface {
};
class ComplicatedObject : public Interface {
};
私は複雑なオブジェクトの単純化されたバージョンを提供したいと思いますが、インターフェイスは引き続き提供します。などの私的継承を考えていました
class Simplified : private ComplicatedObject {
};
もちろん、次のようなインターフェイスに簡単にアップキャストすることはできません
int main() {
Interface* p = new Simplified();
}
コンポジションだけが唯一の方法ですか?またはいくつかの回避策はありますか?暗黙の変換のように