c++ - 从指针基抽象类调用非虚拟子类方法

标签 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?
}

最佳答案

使用dynamic_cast,你可以这样做

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

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

关于c++ - 从指针基抽象类调用非虚拟子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50389025/

相关文章:

c++ - 用户可以在当前 token 之前编辑无效代码吗?

c++ - 参数类型 'void' 不完整

c++ - 使用linux从串口输出PWM信号

c++ - 哪个最适合重复的代码?

c++ - 调试后 CMD 窗口什么也没有显示

c++ - 链接 Bullet Physics 时出现编译错误

c++ - C++ 枚举是否从 0 开始?

c++ - 在链表中查找节点的算法

c++ - 发布版本上的 SFML 图像加载失败 - 文件名损坏

c++ - 如何使用 libpq 在 PostgreSQL 表中以二进制格式插入文本数组?