C++ |通过指向基的指针访问派生类的方法?

标签 c++ inheritance

假设我有一个基类和一个像这样的派生类:

//Base.h
#pragma once
class Base
{
public:
    Base();
    ~Base();
private:
    int A;
};

//Foo.h
#pragma once
#include "Base.h"
class Foo : public Base
{
public:
    Foo();
    ~Foo();
    void setFoo(int number) { foo = number; };
private:
    int foo;
};

假设我声明了一个指向基的指针:

Base* BasePtr = new Foo();

如何使用此 Base* Baseptr; 变量访问 setFoo()? 不使用虚方法可以做到吗? 在基类中有一个虚方法只是为了能够使用 Foo 自己的方法,这似乎违反直觉。

我问的原因是我有一个赋值需要一组指向 Base 的指针,并且需要一种编辑派生类自身属性的方法。

谢谢

最佳答案

这个怎么样:

Foo * p = new Foo();
p->setFoo(10);
Base * BasePtr = p;

或者:

Base * BasePtr = new Foo();
static_cast<Foo *>(BasePtr)->setFoo(10);

关于C++ |通过指向基的指针访问派生类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36521075/

相关文章:

c++ - 依赖倒置原理 : trying to understand

c++ - 多线程效率

JavaScript 继承与 jQuery - 调用父函数

c++ - (初学者)C++关于继承

java - 获取 JPA 和 Hibernate 继承树中的鉴别器值列表

c++ - 如何设置 GstPlayer 管道?

c++ - 读取时文件被删除并重新创建。如何处理?

C++ - 访问动态数组中的值

javascript - object.create 在 JavaScript 中如何工作?

c# - 方法隐藏在 C# 中如何工作?