Всем привет! Это продолжение предыдущей темы, в которой я хочу найти элегантное решение.
Почти решил свою задачку, но уперся в одном месте. Подскажите как обойти эту ошибку
Оказывается что моя задача аналогична задаче про фигуры. Есть разные классы у которых есть общие и различные процедуры.
class Shape{
virtual void Center() = 0;
}
class Line: public Shape{
void Center() {...};
// нет процедуры вычисления площади
}
class Circle: public Shape{
void Center() {...};
double Square() {...}; // вычисляется площадь
}
void FindCenter(vector<Shape*> shape) {
for (vector<Shape*> it = shape.begin(); it!=shape.end(); ++it)
(*it)->Center();
}
void FindSquare(vector<Shape*> shape) {
double s=0;
// Нужно вычислить лишь для третьей фигуры ее площадь
s += shape[2].Square(); // Здесь происходит ошибка.
std::cout << s << std:endl;
}
int main() {
vector<Shape*> shape;
Line line1, line2;
Circle circle;
shape.push_back(&line1);
shape.push_back(&line2);
shape.push_back(&circle);
FindCenter(vector<Shape*> shape); // печатается координаты центра фигуры
FindSquare(vector<Shape*> shape); // найти общую площадь
return 0;
}