网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月02日漏签0天
vc吧 关注:28,886贴子:110,660
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 6回复贴,共1页
<<返回vc吧
>0< 加载中...

开始学C++,error C2440 这是怎么回事啊?

  • 只看楼主
  • 收藏

  • 回复
  • zhuxiao0811
  • 锋芒毕露
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
照着谭浩强C++的书上的例题敲的,例12.4 虚函数和抽象基类的应用
#include <iostream>using namespace std;
class Shape{public:virtual float area() const {return 0.0;}virtual float volume() const {return 0.0;}virtual void shapeName() const=0;};//点类class Point{public:Point(float x=0,float y=0);void setPoint(float,float);float getX() const {return x;}float getY() const {return y;}virtual void shapName() const {cout<<"Point:";}friend ostream & operator<<(ostream &,const Point &);
protected:float x,y;};
Point::Point(float a,float b){x=a; y=b;}
void Point::setPoint(float a,float b){ x=a; y=b;}
ostream & operator<<(ostream &output,const Point &p){ output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output;}
// 对圆类的定义class Circle:public Point{public:Circle(float x=0,float y=0,float r=0);void setRadius(float);float getRadius() const;virtual float area() const;virtual void shapeName() const {cout<<"Circle:";}friend ostream &operator<<(ostream &,const Circle &);protected:float radius;};
Circle::Circle(float a,float b,float r):Point(a,b),radius(r) {}
void Circle::setRadius(float r){ radius=r;}
float Circle::getRadius() const {return radius;}
float Circle::area() const{ return 3.14159*radius*radius;}
ostream &operator<<(ostream &output,const Circle &c){output<<"["<<c.x<<","<<c.y<<"],r="<<c.radius;return output;}
//圆柱体类class Cylinder:public Circle{public:Cylinder (float x=0,float y=0,float r=0,float h=0);void setHeight(float);
virtual float area() const;virtual float volume() const;virtual void shapeName() const {cout<<"Cylinder:";}friend ostream& operator<<(ostream&,const Cylinder&);protected:float height;};
Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){}
void Cylinder::setHeight(float h){ height=h;}
float Cylinder::area() const{ return 2*Circle::area()+2*3.14159*radius*height;}
float Cylinder::volume() const{ return Circle::area()*height;}
ostream &operator<<(ostream &output,const Cylinder &cy){output<<"["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height;return output;}
int main(){Point point(3.2,4.5);Circle circle(2.4,1.2,5.6);Cylinder cylinder(3.5,6.4,5.2,10.5);point.shapName();cout<<point<<endl;
circle.shapeName();cout<<circle<<endl;
cylinder.shapeName();cout<<cylinder<<endl<<endl;
Shape *pt;pt=&point;pt->shapeName();cout<<"x="<<point.getX()<<",y="<<point.getY()<<"\narea="<<pt->area()<<"\nvolume="<<pt->volume()<<"\n\n";
pt=&circle;pt->shapeName();cout<<"x="<circle.getX()<<",y="<<circle.getY()<<"\narea="<<pt->area()<<"\nvolume="<<pt->volume()<<"\n\n";
pt=&cylinder;pt->shapeName();cout<<"x="<cylinder.getX()<<",y="<<cylinder.getY()<<"\narea="<<pt->area()<<"\nvolume="<<pt->volume()<<"\n\n"; return 0;
}
结果运行有错误
error C2440: '=' : cannot convert from 'class Point *' to 'class Shape *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
lx12_4.exe - 7 error(s), 6 warning(s)I


  • 落叶繁花之天秤
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
支持3楼


2026-02-02 18:53:40
广告
不感兴趣
开通SVIP免广告
  • liuzhi0985
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
让Point 继承Shape不就OK了嘛


  • 黑客丶逍遥
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3楼说的对


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回vc吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示