假设我有这个:
class A
{
virtual int Method2(){/*...*/}
};
template<typename T>
class B<T> : public A
{
public :
virtual int Method1(){/*...*/}
virtual int Method2(){/*...*/}
};
是否可以做类似的事情(这当然行不通...)?
A* a = ...;
B* b = dynamic_cast<B*>(a);
b->Method1();
谢谢
最佳答案
人们通常做的是有一个中介类。
class A { virtual ~A() {} };
class B : public A { virtual void method(); }
template<typename T> class C : public B {
void method() { ... }
};
A* a = new C<int>();
if(B* b = dynamic_cast<B>(a)) {
b->method();
}
这称为类型删除。然而,在这个系统中,A 并没有真正起到多大作用。
关于c++ - 在不知道使用的模板类型时使用模板类方法的任何方式(当你有一个基类的指针时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335623/