Tôi là người mới bắt đầu với C++ và tôi đang thực hiện một trong các bài tập về lớp trừu tượng và kế thừa.Tại sao thành viên kế thừa không được phép?
Đây là lớp trừu tượng của tôi:
#ifndef SHAPE_H
#define SHAPE_H
class Shape
{
public:
virtual void area();
virtual void perimeter();
virtual void volume();
};
#endif
Đây là lớp bê tông của tôi mà thực hiện các lớp trừu tượng:
#include <iostream>
#include <cmath>
#include "Shape.h"
using namespace std;
class Circle : public Shape
{
public:
Circle(int);
private:
int r;
};
Circle::Circle(int rad)
{
r = rad;
}
void Circle::area()
{
cout << "Area of this cirle = " << 3.14 * pow(r, 2) << endl;
}
void Circle::perimeter()
{
cout << "Perimeter of this cirle = " << 2 * 3.14 * r << endl;
}
void Circle::volume()
{
cout << "Volume is not defined for circle." << endl;
}
tôi có đường màu đỏ dưới area()
, perimeter()
, và volume()
trong lớp Circle
của tôi , hiển thị "Error: inherited member is not allowed"
. Tôi đã đi qua lớp học của tôi ppt và googled cho câu trả lời nhưng không có may mắn. Bất kỳ trợ giúp được đánh giá cao.
bạn vẫn phải khai báo các phương thức ảo trong lớp dẫn xuất. –
'Hình dạng' không trông trừu tượng. Các chức năng thành viên của nó phải là ảo thuần túy cho điều đó. Ngoài ra, nó nên khai báo một destructor ảo. –
Đừng quên khai báo 'ảo ~ Hình dạng() {}' –