Помогите разобраться.
У меня есть два класса: Родительский и Наследуемый. Есть QVector для Родительского класса. Но в него я передаю экземпляр наследованного класса. После чего достаю экземпляр обратно и получаю вмесо этого экземпляр Родительского класса. Я понимаю, почему так происходит. Но не знаю, как сделать так, чтобы возвращался экземпляр исходного класса. При этом имея возможность засунуть в QVector различные варианты наследников.
P.S. Я очень плохо знаком с С++, поэтому не надо пугать меня Царем и другими авторитетами. Скорее всего я не знаю, кто это.
Поясняющий пример:
#include <QDebug>
#include <QVector>
class Parent
{
private:
QString m_str;
protected:
QString str() const {return m_str;}
public:
Parent(QString str = "EmptyParent") : m_str(str){ }
Parent(const Parent& oth) : m_str(oth.m_str) {}
virtual void sayStr() const {qDebug() << m_str;}
virtual Parent& operator=(const Parent& oth) {return *new Parent(oth);}
};
class Child : public Parent
{
private:
QString m_chstr;
public:
Child(QString str = "EmptyChild") : Parent("Ololo"), m_chstr(str) {}
Child(const Child& oth) : Parent(oth), m_chstr(oth.m_chstr) {}
virtual Child& operator=(const Child& oth) {return *new Child(oth);}
virtual void sayStr() const Q_DECL_OVERRIDE {qDebug() << m_chstr;}
};
int main(int argc, char *argv[])
{
QVector<Parent> vec;
Child el("Child");
vec.push_back(el);
vec.at(0).sayStr();
return 0;
}