class Polygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
};
class Rectangle: public Polygon {
public:
int area()
{ return width*height; }
};
int main () {
Rectangle rect;
Polygon * ppoly1 = ▭
ppoly1->set_values (4,5);
cout << rect.area() << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,ppoly1指向什么以及该指针如何无法访问矩形类的函数?
为什么ppoly1-> area()是一个错误
谢谢!
表达式ppoly1->area()
是一个错误,因为ppoly1
键入的语句Polygon
没有area
声明方法.当C++试图评估这个成员时,它基本上是在Polygon
看不到任何成员命名时开始area
,因此发出错误
听起来你想给Polygon
类型一个area
没有实现的方法的概念(强制派生类型提供一个).如果是这种情况,那么您应该声明一个未实现的虚拟方法Polygon
class Polygon {
...
virtual ~Polygon() { }
virtual int area() = 0;
};
Run Code Online (Sandbox Code Playgroud)