其他分享
首页 > 其他分享> > c – 模板类和基类?

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