从指针基类抽象类调用no-virtual subclass方法

时间:2018-05-17 10:20:34

标签: c++

我需要使用类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?
}

1 个答案:

答案 0 :(得分:4)

使用dynamic_cast,您可以

B b;
A* a = &b;
if (auto* bp = dynamic_cast<B*>(a)) {
     bp->K();
}

但您应该重新考虑您的设计。