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