私はマイクロコントローラーを使用しており(つまり、静的メモリ割り当てしかできないことを意味します)、継承を使用しようとしています.....
抽象クラスImageと抽象クラスがあるとしFontます。のインスタンスは、次のように、関数で指定されたのベースオフをFont返すことができます。Imagechar
Font* mf;
Image* image = mf->GetImage("a");
GetImageここでの本当の問題は、関数に対して何をすべきかわからないことです。
問題はこれです: C++ では、抽象クラスのメンバーを持つためには、それをポインターとして使用する必要があります。したがって、私のジレンマは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
}
では、この種の静的メモリの問題にはイディオムか何かがありますか?