私は(私は、静的なメモリ割り当てを持つことができることを意味)マイクロコントローラ上と私は相続で動作するようにしようとしています.....静的ポリモーフィズム問題
は、私は抽象クラスImage
と抽象を持っていると仮定クラスFont
。 Font
のインスタンスは、そのような関数で与えられたchar
のオフに基づいてImage
を返すことができます。
Font* mf;
Image* image = mf->GetImage("a");
今、本当の問題は、私が何GetImage
機能のために行うには見当がつかないです。
問題はこれです:あなたは、抽象クラスのメンバーを持っているためには、ポインタとして使用する必要があります。だから私のジレンマは、私がFont
を持っていて、新しいImage
を作り、それを返そうとしているということです。
それは、その新たに作成されたImage
あなたは一時的なオブジェクトへの参照を返すさへのポインタを返す場合:
Image* FontImpl::GetImage(char c){
return &ImageImpl(c); //This object is destroyed once this function exits
}
をそして私が戻る場合、私はこのような実際の型を返すようにしてみてください。
Image FontImpl::GetImage(char c){
return ImageImpl(c); //Cannot cast from ImageImpl to Image
}
このような静的メモリの問題には、イディオムなどがありますか?
は実際に_static inheritance_何ですか? [CRTP](https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)で提供されている_staticポリモーフィズム_を意味しましたか? –
@πάνταῥεῖはい私は静的多型を意味しました....私はそれに応じて投稿を編集します – DarthRubik
抽象的な基底クラスの使用は静的多型ではなく、実行時多型です。静的なメモリ割り当てをしています。それが扱いにくい場合は、小さなメモリプールクラスの作成やダウンロードを検討し、静的なバッファから動的な割り当てを行ってください。 –