c++使用来自基类的指针访问派生类

标签 c++ pointers derived

编译器一直说 'class A' 没有名为 'foo' 的成员。 我正在尝试将派生类中的函数与指针一起使用。这是我的代码:

 class A{
  .....
};

class B:public A{
     virtual void foo() = 0;
};

class C:public B{
....
public:
    void foo(){
        ....
    }
};

我有一个名为 TableA 指针表,在尝试时

Table[j]->foo()

我收到编译器错误。

除了cast我还应该做什么?

最佳答案

你有一个编译错误,因为函数 foo 没有在类 A 中声明。

你可以像这样在 A 中将其声明为纯虚拟:

class A {
     virtual void foo() = 0;
};

在派生类中,您不必将 foo 显式声明为 virtual。如果只有 C 是具体类,则根本不必在类 B 中声明 foo

如果您的示例知道在指向 A 的指针数组中只有类 C 的实例,您可以显式转换为指向 C 的指针,但它是一个设计不佳的标志,我不推荐它:

static_cast<C*>(Table[j])->foo()

关于c++使用来自基类的指针访问派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47962263/

相关文章:

python - 如何从派生类打印变量?

java - m2eclipse 将 'target' 目录标记为 'Derived'

c++ - 如何使用取决于模板参数的字符类型定义字符串文字?

c++ - 启动 Weston 时无法开始调试

C++ "' DOMDocument' : redefinition"Error with Xercesc

c# - 将方法指针从 C# 传递到 Delphi DLL

指向指针的指针数组 二维数组

c++ - C++ 中的指针和引用错误

C++ 类型转换损坏的结构

python - Cython C++ 示例失败,为什么?