簡體   English   中英

靜態多態問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM