我必须设计项目的特定体系结构。我在尝试创建指向虚拟类的指针时遇到了麻烦,并且遇到了段错误(似乎我的指针分配不正确)。 我在下面列出了我想做的事情的草稿。
// 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类中的任何一个。 感谢您的帮助!
答案 0 :(得分:1)
虚拟调用允许通过基本类型的指针或引用从对象访问函数。请注意,对象本身必须是实现功能的类型。
因此,在C类中,您可以看到类似这样的内容:
B b;
A *ptr = &b;
ptr->myFunction()
或
A *ptr = new B();
ptr->myFunction()
无论哪种方式,都需要创建B类型的对象,并将其分配给A *类型的指针。