报错的类定义
class Shape
{
public:
virtual int getArea();//这里只有声明函数getArea(),没有定义
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};
class Rectangle:public Shape
{//w*h = s
public:
int getArea(void)
{
return (width*height);
}
};
报错类型
D:\Program Files 编译器位置 源文件位置.cpp:(.rdata$.refptr._ZTV5Shape[.refptr._ZTV5Shape]+0x0): undefined reference to `vtable for Shape'
解决方法
在声明时给getArea()一个定义
class Shape
{
public:
virtual int getArea()
{
return 0;
}
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};
class Rectangle:public Shape
{//w*h = s
public:
int getArea(void)
{
return (width*height);
}
};
int main()
{
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
cout << "Total Rectangle area: " << Rect.getArea() << endl;
return 0;
}
输出结果
Total Rectangle area: 35