【发布时间】:2021-05-26 17:35:15
【问题描述】:
所以我有一个 c++ 项目,我正在处理,我正在尝试理解其他人的代码,但我得到的只是关于 c++ 抽象类的错误和困惑。
所以我有一个头文件,一个cpp文件和一个主程序。
我想创建一个抽象类指针,然后将它传递给一个将其初始化为子类的方法,然后回到主程序中我可以将它用作子类:
main.cpp:
#include "a.h"
#include <iostream>
using namespace std;
void parse(A* a){
a = new B();
a->foo();
}
int main() {
A* a;
parse(a);
a->foo();
}
a.h:
class A{
public:
virtual void foo() const = 0;
virtual ~A(){ }
};
class B : public A{
public:
void foo() const override;
};
class C : public A{
public:
void foo() const override;
};
a.cpp
#include <iostream>
#include "a.h"
void B::foo() const{
std::cout << "B" << std::endl;
}
void C::foo() const{
std::cout << "C" << std::endl;
}
基本上在这里我认为我应该得到一个 B,但我得到一个 分段错误 或程序 退出 没有打印任何东西。
感谢您的帮助!
【问题讨论】:
-
void parse(A*& a){应该可以解决您的问题。
标签: c++ initialization polymorphism abstract-class pass-by-reference