c – 模板类和基类?
作者:互联网
我有一个基类IStructure,由许多类派生.
其中一些类’引用’其他IStructure类.例如,我的类类GuiButton:public IStructure有一个Textstring的成员(它也来自IStructure).
现在我只是闪闪发光,所以我可以说到这一点,所以这对你们中的一些人来说似乎很奇怪.我想有一个引用IStructure的模板类’Reference’.例如:
class GuiButton : public IStructure {
public:
Reference<Textstring> Text;
};
我知道有些人可能想知道我为什么不做Textstring * Text.这是因为其中一些引用是“外部的”. Reference模板类仅保存有关IStructure的信息(即名称等).其中一些类非常庞大,将整个类实例化为仅使用Name属性和不使用Name属性是没有意义的.那有意义吗?
所以现在我的问题:
class Textstring : public IStructure;
我可以使用我的模板引用Textstring:
Reference<Textstring> Text;
现在问题出在这里:我需要的一些方法要求我将其转换为“IStructure”,例如:
void RegisterReference(Reference<IStructure> &reference);
所以我不能这样做:
Reference<Textstring> txt("TextName");
RegisterReference(txt); // error
我知道我可以通过不使用Reference作为模板来解决这个问题,但我真的很想,因为这样可以更容易理解并知道引用的类型.
我有什么方法可以做到这一点?
谢谢你的帮助!
-Alex
解决方法:
您可以使您的函数成为Reference的type参数的模板,如下所示:
template <typename R>
void RegisterReference(Reference<R> &r);
标签:base-class,c,templates 来源: https://codeday.me/bug/20190901/1786108.html