【C++】not accessible because 'Rectangle' uses 'private' to inherit from 'Shape'
阿新 • • 發佈:2018-12-21
1、錯誤程式碼
#include <iostream> using namespace std; // 基類 class Shape { public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // 派生類 class Rectangle: Shape { public: int getArea() { return (width * height); } }; int main(void) { Rectangle Rect; Rect.setWidth(5); Rect.setHeight(7); cout << "Total area: " << Rect.getArea() << endl; return 0; }
提示錯誤如下:
2、由於派生類繼承基類時“class Rectangle: Shape”,缺少public,導致的問題,修改如下:
#include <iostream> using namespace std; // 基類 class Shape { public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // 派生類 class Rectangle: public Shape { public: int getArea() { return (width * height); } }; int main(void) { Rectangle Rect; Rect.setWidth(5); Rect.setHeight(7); cout << "Total area: " << Rect.getArea() << endl; return 0; }
正確輸出如下: