1. 程式人生 > >【C++】not accessible because 'Rectangle' uses 'private' to inherit from 'Shape'

【C++】not accessible because 'Rectangle' uses 'private' to inherit from 'Shape'

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;
}

正確輸出如下: