c++ - 如何使用基类指针访问派生模板类成员
问题描述
我尝试实现模板多态性以有条件地初始化模板类对象。现在我必须访问模板类的成员变量,但我不确定如何在这里做到这一点。
class base
{
public:
base();
virtual ~base();
};
template <typename T>
class derived : public base
{
T derived_member;
}
...
void init(base*& base)
{
if (flow1)
base = new derived<int>();
else if (flow2)
base = new derived<string>();
else if (flow3)
base = new derived<float>();
else
base = new derived<userdefined_type>();
}
void func1()
{
base* b = NULL;
init(b);
// I want to access derived_mem of derived class .
// But I'm not understanding a better way to do something like this without typecasting base to
// derived , is there a better way to do this ? The below code defeats the whole point of template
// polymorphism I believe
if (flow1)
doSomething((derived_mem<int>*)(b));
else if (flow2)
doSomething((<derived_mem<string>*>)(b));
.....
}
我在想如果我能以某种方式理解如何在这里重载访问运算符,也许我可以做到这一点,但我不太确定。因为我正在处理遗留代码,所以我对编写get()
访问函数并不完全感兴趣。derived_member
有一个更好的方法吗?
解决方案
推荐阅读
- php - 如何使用 PHP 从 json_encoded 格式获取值?
- azure-cdn - Azure CDN 中的详细访问日志
- java - 在 Java 中使用 Optional 类时无法将对象转换为字符串
- java - 来自具有不同 ID 的相似字符串的唯一节点 ID
- java - return 语句后无法访问代码,同时从小部件打开社交媒体链接
- android - 我想以编程方式不断创建带有单选按钮的单选组
- java - 如何为pdf添加水印(itext7.1.2 java)
- django - DRF 如何为基于 JWT 的身份验证关闭 CSRF-token 检查?
- php - 如何更改 wordpress 搜索小部件中的提示文本
- java - 来自验证器类的消息没有出现在 xpage 的消息控件中?