не может преобразовать ‘ArithProgression *’ в ‘Progression *’ в назначении

Я определил класс «Progression» и сохранил его как «Progression.h», а затем я создал другой класс «ArithProgression», который расширяет класс Progression и сохранил его как «ArithProgression.h».

Файл: Progression.h

#ifndef PROGRESSION_H
#define PROGRESSION_H
#include <iostream>

using namespace std;

class Progression
{
public:
Progression()
{
cur=first=0;
}
Progression(long f)
{
cur=first = f;
}
void printProgression(int n)
{
cout<<firstValue();
for(int i=0;i<=n; i++)
{
cout<<' '<<nextValue();
}
}
virtual ~Progression() {}
protected:
long first;
long cur;

virtual long firstValue()
{
cur= first;
return cur;
}
virtual long nextValue()
{
return cur++;
}
};

#endif // PROGRESSION_H

ФАЙЛ: ArithProgression.h

#ifndef ARITHPROGRESSION _H
#define ARITHPROGRESSION _H
#include "Progression.h"class ArithProgression :public Progression
{
public:
ArithProgression(long i=1)
:Progression()
{
inc=i;
}
virtual ~ArithProgression () {}
protected:
long inc;
virtual long nextValue()
{
cur+=inc;
return cur;
}
private:
};
#endif // ARITHPROGRESSION _H

ФАЙЛ: main.cpp

#include <iostream>
#include "Progression.h"#include "ArithProgression.h"using namespace std;
int main()
{
Progression* p;
p= new ArithProgression();
p->printProgression(10);
delete p;
}

Я получаю сообщение об ошибке: «не удается преобразовать ArithProgression * в« Progression * »при назначении» в блоках кода 12.11

Пожалуйста помоги

0

Решение

Ваш код, как вы его опубликовали, работает просто отлично. поскольку ArithProgression действительно подкласс Progressionвышеуказанный код не может вызвать эту ошибку.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]