c++ - 如何通过派生指针调用基类中的模板成员函数
问题描述
以下示例只是我的代码的简化骨架。我的问题是为什么我不能从派生指针调用模板成员函数。根据我的理解,基类的成员函数通常也可以从派生对象或指针中调用。
class Base {
public:
template<typename T> T* data() {
static_cast<T *>(data(dtype));
}
virtual void data(DataType dtype) = 0;
};
class Derived1 : public Base {
public:
void data(DataType dtype) override { ... }
};
class Derived2 : public Base {
public:
void data(DataType dtype) override { ... }
};
int main() {
Base * base = new Derived1();
...
Derived1 * derived1 = dynamic_cast<Derived1 *>(base);
derived1->tempalte data<int>(); // Compiling error
...
}
解决方案
Derived1::data
隐藏在 中命名data
的所有成员Base
。如果要使它们可见,请将此行添加到正文中的任何位置Derived1
:
using Base::data;
推荐阅读
- jquery - 向下滚动页面时显示滚动更新
- powershell - 获取 Distribution List 多个 Owners 作为交换
- python - 如何根据日期时间差异拆分数据框?
- c# - AutoMapper 无法在对象内映射对象
- nginx - Zabbix 奇怪的行为,无法访问网页界面
- python - sublimetext3 中的自动补全
- python - 从 QMainWindow 调用具有变量名的 Python 函数
- c# - 无法从配置中获取 ConnectionString 值
- c# - 安全截断字符串包含颜色标签
- javascript - 简单的javascript循环点击按钮