【发布时间】:2019-11-26 06:01:00
【问题描述】:
我必须设计项目的具体架构。我在尝试创建指向虚拟类的指针时卡住了,并且遇到了分段错误(似乎我的指针没有正确分配)。 下面是我正在尝试做的草稿。
// 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 类。 感谢您的帮助!
【问题讨论】:
-
A* ptr = new B?看来您可以使用 a good book or two to read 来更新 C++。 -
你所有的声明都是错误的,这不能编译。而
A *ptr; ptr->myFunction();:ptr无处可去,所以在某种程度上预计会出现段错误。 -
“似乎我的指针没有正确分配”它没有被分配(初始化)根本!
-
了解 C++ 中的 polymorphism 是什么。也尽量不要使用原始指针。在这种情况下,您似乎可以使用unique_ptr
-
// IS IMPLEMENTED HERE!!: 不,它不是,它只是被声明的。
标签: c++ inheritance polymorphism virtual abstract