Я делаю что-то с C ++, где я делаю объект абстрактного класса Parent и инициализирую его в функции для дочернего класса. Когда я инициализирую объект при его создании, все творит чудеса. Когда я инициализирую его в функции, я получаю ошибку сегментации.
Вот схема кода того, что я делаю
_class.h
#ifndef CLASS_H_INCLUDED
#define CLASS_H_INCLUDED
class Parent{
public:
virtual void foo() = 0;
};
class Child1 : public Parent{
public:
virtual void foo(){
...
}
};
class Child2 : public Parent{
public:
virtual void foo(){
...
}
};
#endif
main. cpp
#include <iostream>
using namespace std;
#include "main.h"
#include "_class.h"
void setChild(Parent* c){
c = new Child1();
}
int main() {
Parent* c;// = new Child1();
setChild(c);
c->foo(); //Seg Fault
}
Очевидно, я мог бы просто инициализировать в main, но я бы предпочел инициализировать в функции. Возможно ли это, и если да, то что я делаю не так?