繁体   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