我需要使用 A
类的指针。但是我怎样才能用这种方式调用类 B
的方法呢?
该方法不是 virtual
,它属于 B
类。
class A
{
private:
string x;
public:
virtual void J() = 0;
};
class B : public A
{
private:
int y;
public:
virtual void J(){
cout << "J()";
}
void K(){
cout << "K()";
}
};
int main(){
B b;
A* a = &b;
K(); //How can I call method K() with pointer a?
}
最佳答案
使用dynamic_cast
,你可以这样做
B b;
A* a = &b;
if (auto* bp = dynamic_cast<B*>(a)) {
bp->K();
}
但您可能应该重新考虑您的设计。
关于c++ - 从指针基抽象类调用非虚拟子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50389025/