gpt4 book ai didi

c++ - 通过指针访问虚类

转载 作者:行者123 更新时间:2023-11-30 04:45:47 26 4
gpt4 key购买 nike

我要设计项目的具体架构。我在尝试创建指向虚拟类的指针时卡住了,并遇到了段错误(似乎我的指针分配不正确)。下面我列出了我正在尝试做的事情的草稿。

// Class A has to be pure virtual. It will be inherited by many classes in my project.
class A:
{
public:
virtual void myFunction() = 0;
}


// Class B implements the method from the class A
#include <A.h>
class B: public A
{
public:
void myFunction(); // IS IMPLEMENTED HERE!!
}


// Class C creates a pointer to the class A.
#include <A.h>
class C:
{
A *ptr;
ptr->myFunction(); //Here I want to run myFuction() from the class B.
}

如何在这三者之间建立联系,以便获得我想要的结果。我无法更改体系结构,也无法简单地省略 A、B 或 C 类中的任何一个。感谢您的帮助!

最佳答案

虚拟调用允许通过指针或基类型引用从对象访问函数。请注意,对象本身需要是实现功能的类型。

所以,在 C 类中你可以有这样的东西:

B b;
A *ptr = &b;
ptr->myFunction()

A *ptr = new B();
ptr->myFunction()

无论哪种方式,您都需要创建一个 B 类型的对象,并将其分配给 A* 类型的指针。

关于c++ - 通过指针访问虚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57075226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com