РЕДАКТИРОВАТЬ: Этот вопрос возник, и я думаю, что я его исправил!Go StackOverflow !!: D
Я готовлюсь к экзаменам, и один из вопросов прошлогодних экзаменов состоял в том, чтобы определить проблему с реализацией следующего конструктора и написать исправленный.
Rectangle::Rectangle(string col, int len, int br)
{
setColour(col);
length =len;
breadth=br;
}
Определения классов следующие:
class Polygon
{
public:
Polygon(string col="red");
void printDetails(); // prints colour only
virtual double getArea()=0;
void setColour(string col);
private:
string colour;
};
class Rectangle : public Polygon
{
public:
Rectangle(string, int, int);
void printDetails(); // prints colour and area
// for part 3, delete the line below
double getArea();
private:
int length;
int breadth;
};
Я написал код в компилятор, и он работает нормально.Я предполагаю, что вопрос касается наследования, так как string colour;
является частным, но setColour
является публичным, поэтому я не могу понять это.Если только не Rectangle::Rectangle(string col, int len, int br):length(len), breadth(br)
, а затем установить цвет внутри конструктора или чего-то еще.
Это стоит всего 3 знака, так что это не такая уж большая сделка, если никто не хочет отвечать, но я думаю, что у меня будеткарьера программиста, в моих интересах знать как можно больше.;)
Спасибо за любую помощь.
PS , см. getArea()
в Rectangle
.Когда я удаляю это, он говорит мне, что «не может создать экземпляр абстрактного класса».Что это значит?
РЕДАКТИРОВАТЬ: Вот главное:
void main (void)
{
Rectangle rect1 ("blue",5,6);
Rectangle *prect2 = new Rectangle("red",5,6);
rect1.setColour("red");
rect1.printDetails();
prect2->printDetails();
}