| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:哪里错了,求大神
只看楼主 加入收藏
l991160619
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2013-9-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
哪里错了,求大神
#include <iostream>
using namespace std;
class cCurrency
{
public:
    cCurrency(float fAmerican,float fEurope);
    virtual void Print_Exchange(){}
    void set();
protected:
    float fAmerican;
    float fEurope;
};

cCurrency::cCurrency(float fAmerican,float fEurope)
{
    this->fAmerican=fAmerican;
    this->fEurope=fEurope;
}

class cAmerican:public cCurrency
{
public:
    void Print_Exchange();
private:
    float RMB;
};
class cEurope:public cCurrency
{
public:
    void Print_Exchange();
private:
    float RMB;
};
void cAmerican::Print_Exchange()
{
    this->RMB=100*fAmerican;
    cout<<this->RMB<<endl;
}

void cEurope::Print_Exchange()
{
    this->RMB=100*fEurope;
    cout<<this->RMB<<endl;
}

void cCurrency::set()
{
    this->fAmerican=(float)6.3492;
    this->fEurope=(float)7.9365;
}

int main()
{
    cCurrency *pCurrency=new cCurrency(2,3);
    cAmerican A1;
    cEurope A2;
    pCurrency=&A1;
    pCurrency->set();
    pCurrency->Print_Exchange();
    pCurrency=&A2;
    pCurrency->set();
    pCurrency->Print_Exchange();
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: private include public 
2013-09-02 17:28
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:7 
error: implicit default constructor for 'cAmerican' must explicitly initialize the base class 'cCurrency' which does not have a default constructor

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-02 17:36
l991160619
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2013-9-2
收藏
得分:0 
回复 2楼 peach5460
你有本事,你改
2013-09-02 17:46
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
我有本事,但我不改,请你注意说话的语气

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-02 18:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
这个类计划本来就是错的,改也白改。

授人以渔,不授人以鱼。
2013-09-02 18:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
基类的名字是“货币”,你居然在类上设计两个具体的货币字段“美元”和“欧元”,这是什么概念呀?“货币”只应有“名称”和“计量单位”、“价值”之类抽象的属性,派生类才是比这个基类更具体的子类,方才到“美元类”和“欧元类”、“人民币类”等等,每种具体子类有各自独特的表现,可以通过“价值”属性互相兑换。你看看你的设计,抽象类中夹杂实例属性,到派生类中还怎么沿用共性?你的两个派生子类是“美元”和“欧元”,它们自己怎么还可能再有美元和欧元的参数传入进去构造自身?你之所以无法换掉默认的构造函数,根源就在于整个概念系统(类树)的设计是错的,而语言的设计不允许构造函数是虚函数,也正是这个原因,因为它断定在逻辑上就不应该有这种需求!当你的编码遇到现在这种困境时,就要醒悟是设计的问题了。

[ 本帖最后由 TonyDeng 于 2013-9-2 21:01 编辑 ]

授人以渔,不授人以鱼。
2013-09-02 20:48
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:7 
回复 3楼 l991160619
注意问问题的态度吧

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-09-03 15:20
快速回复:哪里错了,求大神
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011675 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved