[英]Static Polymorphism Issue
我在一個微控制器上(這意味着我只能有靜態內存分配)並且我正在嘗試使用繼承.....
假設我有一個抽象類Image
和一個抽象類Font
。 Font
的實例可以根據函數中給出的char
返回Image
,如下所示:
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
}
那么對於這種靜態內存問題是否有成語或其他東西?
使用動態分配將是最簡單的,但如果不可能,您必須將實例存儲在函數之外的某個地方,例如:
static ImageImpl image;
Image& FontImpl::GetImage(char c) {
image = ImageImpl(c);
return image;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.