Я работаю над университетским заданием о поиске массива различных форм с использованием ООП. Я создал все мои классы форм, поэтому они происходят из моего основного класса формы. Класс Shape используется как интерфейс, так что все классы формы, полученные из класса формы, должны иметь функцию области расчета и т. Д. Я хочу создать массив разных форм. Я объявил массив с типом формы, который является родительским классом, и я хочу добавить новые экземпляры каждой формы, круга, квадрата, прямоугольника и треугольника в список массивов, чтобы вся информация о каждой форме хранилась в один массив. У меня есть следующий код, но у меня есть ошибка в строке aShapes [i] = square; говорит, что форма является недоступной базой квадрата.Добавление классов в массив
Если кто-то мог помочь, это было бы здорово.
Спасибо в продвижении.
Вот мой код
#include <cstdlib>
#include <iostream>
#define M_PI 3.14159265358979323846
using namespace std;
class Shape{
public:
string sName;
float nArea;
void fnAddData();
float fnCalculateArea();
};
class Square : private Shape {
private:
float nSide;
void fnAddData()
{
cout << "Please enter the length of a side: ";
cin >> nSide;
}
float fnCalculateArea(float side)
{
return (side * side);
}
public:
Square()
{
sName = "Square";
fnAddData();
nArea = fnCalculateArea(nSide);
}
};
Shape aShapes[5];
/*
*
*/
int main(int argc, char** argv)
{
int decision;
Square square;
for (int i = 0; i < 5; i++)
{
cout << "Shape number";
cin >> decision;
switch (decision)
{
case 1:
aShapes[i] = square;
}
}
return 0;
}
Вы подвергаетесь разрезанию объектов. – chris
'class Square: private Shape' - почему [частное наследство] (http://stackoverflow.com/questions/1576978/private-inheritance) здесь? –
Вы также хотите предоставить 'Shape' виртуальный деструктор. – chris