gpt4 book ai didi

c++ - 在不知道使用的模板类型时使用模板类方法的任何方式(当你有一个基类的指针时)

转载 作者:行者123 更新时间:2023-11-30 03:09:10 26 4
gpt4 key购买 nike

假设我有这个:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com