如何调用参数为std:std basic istreamm amp;的构造函数

 上传我的文档
 下载
 收藏
免责声明:1,本账号发布文档来源于互联网和个人收集,仅用于技术分享交流用,版权为原作者所有。 2,文档内容纯属来自网络意见,与本账号立场无关。涉及政治言论一律相应删除,请大家监督。 3. 本账号发布文档均来源于个人收集和互联网,仅用于分享、学习、交流等使用.如在使用下载、浏览过程中出现问题,请及时站内留言或留下信箱等联系方式. 4. 本人不对文档合法性承担任何法律责任。 5. 如有文档存在侵权行为请告知,经核实将予以删除. 6,如有侵犯原您的版权,请提出指正,我们将立即删除相关资料有其它问题也欢迎与本人联系
 下载此文档
正在努力加载中...
11 概述 - Unix技术网 = 全球最大的LinuxUnix应用与开发者社区
下载积分:2500
内容提示:11 概述 - Unix技术网 = 全球最大的LinuxUnix应用与开发者社区
文档格式:PDF|
浏览次数:2|
上传日期: 11:06:06|
文档星级:
全文阅读已结束,如果下载本文需要使用
 2500 积分
下载此文档
该用户还上传了这些文档
11 概述 - Unix技术网 = 全球最大的LinuxUnix应用与开
官方公共微信欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 6689 人关注过本帖
标题:求助:没有与参数列表匹配的构造函数
等 级:新手上路
&&已结贴√
&&问题点数:20&&回复次数:4&&&
求助:没有与参数列表匹配的构造函数
#include &iostream&
#include &iomanip&
#include &cmath&
class fra{
&&& fra(int s, int m);
&&& int getx(){ }
&&& int gety(){ }
&&& int plus(fra a, fra b);
&&& int x,
&&& void reduct(int m, int s);
fra::fra(int s, int m){
&&& if (s*m & 0){
&&&&&&&&x = -abs(s);
&&&&&&&&y = abs(m);
&&&&&&&&x =
&&&&&&&&y =
void fra::reduct(int m, int s){
&&& int max, min, k, t, m1, s1;
&&& m1 = abs(m);&&& s1 = abs(s);
&&& if (m1 &= s1){
&&&&&&&&max = m1;
&&&&&&&&min = s1;
&&& else {
&&&&&&&&max = s1;
&&&&&&&&min = m1;
&&& k = max%
&&& if (k == 0)
&&&&&&&&t =
&&& while (k){
&&&&&&&&max =
&&&&&&&&min =
&&&&&&&&t =
&&&&&&&&k = max%
&&& m = m /
&&& s = s /
&&& cout && &Answer:& && s && &/& && m &&
int fra::plus(fra a, fra b){
&&& int m,
&&& if (a.gety() == 0 || b.gety() == 0){
&&&&&&&&cout && &ERROR!& &&
&&&&&&&&return 0;
&&& m = a.gety()*b.gety();
&&& s = (a.getx()*b.gety()) + (b.getx()*a.gety());
&&& reduct(m, s);
&&& return 0;
int main(){
&&& int p, q,k,l;
&&& cin && p && q && k &&
&&& fra a(p,q), b(k,l);
&&& fra plus(a, b);//此处a下边提示错误“没有与参数列表匹配的构造函数&fra::fra&实例,参数类型为:(fra,fra)”
&&& return 0;
搜索更多相关主题的帖子:
等 级:版主
威 望:203
帖 子:4848
专家分:26424
你这是乱用对象,画虎不成反类犬。
我教你一个方法:先别急着设计类和接口,先将怎么使用的用例写好,然后根据用例去完成接口。
也就是先写出
int main( void )
&&& fra a,
&&& cin && a &&
&&& cout && (a+b) &&
然后根据这段用例去设计 fra 吧。
程序代码:////////////////////////////////////////////////////////
#include &iostream&
#include &exception&
struct fraction
&&& fraction( int n=<font color=#, int d=<font color=# );
&&& fraction& reduct( void );
&&& friend std::istream& operator&&( std::istream&, fraction& f );
&&& friend std::ostream& operator&&( std::ostream&, const fraction& f );
&&& friend fraction operator+( const fraction& lhs, const fraction& rhs );
////////////////////////////////////////////////////////
fraction::fraction( int n, int d ) : numerator(n), denominator(d)
&&& if( d == <font color=# )
&&&&&&&&throw std::invalid_argument(&divided by zero&);
fraction& fraction::reduct( void )
&&& int a =
&&& int b =
&&& while( b != <font color=# )
&&&&&&&&int c = a%b;
&&&&&&&&a =
&&&&&&&&b =
&&& numerator /=
&&& denominator /=
&&& if( denominator & <font color=# )
&&&&&&&&numerator = -
&&&&&&&&denominator = -
&&& return *this;
std::istream& operator&&( std::istream& is, fraction& f )
&&& int n,
&&& if( is&&n&&d )
&&&&&&&&f = fraction(n,d);
&&& return
std::ostream& operator&&( std::ostream& os, const fraction& f )
&&& return os && f.numerator && '/' && f.
fraction operator+( const fraction& lhs, const fraction& rhs )
&&& int n = lhs.numerator*rhs.denominator + rhs.numerator*lhs. // 严谨一些的话,这里应该判断是否抛出std::overflow_error
&&& int d = lhs.denominator*rhs.
&&& return fraction(n,d).reduct();
////////////////////////////////////////////////////////
using namespace
int main( void )
&&& fraction a,
&&&&&&&&if( !(cin&&a&&b) )
&&&&&&&&&&&&cerr && &input error.\n&;
&&&&&&&&&&&&return <font color=#;
&&& catch( const std::exception& e )
&&&&&&&&cerr && e.what() && '\n';
&&&&&&&&return <font color=#;
&&& cout && a && & + & && b && & = & && (a+b) &&
&&& return <font color=#;
输入 a b c d
输出 input error.
输入 3 2 1 0
输出 divided by zero
输入 -30 -42 165 -195
输出 -30/-42 + 165/-195 = -12/91
等 级:论坛游民
帖 子:14
专家分:41
fra plus(a, b);
这一句不就是代表声明plus对象吗?应该加上::吧
等 级:贵宾
威 望:116
帖 子:1529
专家分:8567
对c++不熟悉,不过你先定义类fra a(p,q),b(k,l),a,b即为类fra实体,实体化时执行类构造函数,使用int变量(p,q,k,l),接下来你又定义类的实体plus,也执行构造函数,但使用的变量是fra类(a,b),很显然,你并没有在类定义构造函数使用类自身的函数,所以这种行为非法,我猜想你是要用类函数plus,因此使用你前面定义的类实体(a,b)中任意一个都可以完成,即将语句“fra plus(a, b);”修改为“a.plus(a,b);”即可。
能编个毛线衣吗?
等 级:版主
威 望:105
帖 子:1298
专家分:6426
int main(){
&&& int p, q,k,l;
&&& cin && p && q && k &&
&&& fra a(p,q), b(k,l);
&&& fra plus(a, b);//此处a下边提示错误“没有与参数列表匹配的构造函数&fra::fra&实例,参数类型为:(fra,fra)”
&&& return 0;
要想这样用只有把plus写成友元函数,既是写在类的公有成员里面,就只能用 &对象名&.plus()的方式调用了。
版权所有,并保留所有权利。
Powered by , Processed in 0.087734 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved查看:2543|回复:5
最近在学习STL里面的迭代器!
为什么不能让我调用std::istream_iterator呢?
书上给的例子也运行不了,是环境问题?复制内容到剪贴板代码:#include &iostream&
#include &string&
#include &map&
#include &iomanip&
int main()
& & & & typedef map&string, int&::const_iterator I
& & & & map&string, int&
& & & & cout&&&请输入数字值以空格分割开退出请按A+Z&&&
& & & & istream_iterator&string& begin(cin); //提示“istream_iterator”: 不是“std”的成员?请问这是什么呢?
& & & & istream_iterator&string&
& & & & while(begin != end){
& & & && && &words[*begin++]++; //递增和存储一个计算值
& & & & cout&&&现在开始输出:&&&
& & & & for(Iter iter = words.begin(); iter != words.end(); ++iter)
& & & && &&&cout&&setw(5)&&iter-&second&&& &&&iter-&first&&
& & & & return 0;
版规,发帖可获2无忧币
包含头文件: #include &iterator&
是std内的方法还得重新引用 iterator
版规,回帖可获2无忧币
看看这个会不会对你有帮助
非常谢谢楼主
版规,回帖可获2无忧币
引用:原帖由 wwwcs59 于
09:29 发表
包含头文件: #include&&测试成功,确实有用。我想问问版主,咱不能发表情呢,你行吗?
版规,回帖可获2无忧币以下试题来自:
单项选择题已知类Myst有一个只需要一个double型参数的构造函数,且将运算符“-”重载为友元函数。要使语句序列
Myst x(3.2),y(5.5),z(0.0);
能够正常运行,运算符函数operator―应该在类中声明为A.friend Myst operator-(Myst&,Myst&);B.friend Myst operator-(Myst,Myst);C.friend Myst operator-(Myst,Myst&);D.friend Myst operator-(Myst&,Myst);
为您推荐的考试题库
你可能感兴趣的试题
1A.istream& operator >>(istream&,<类名>&);B.istream& operator >>(istream,<类名>);C.istream operator >> (istream,<类名>&);D.<类名> operator >>(istream&,<类名>&);2A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性3A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;4A.f(5)B.f(5,8)C.f(6,'&')D.f(0,0,'@')5A.E-R 图只能表示实体之间的联系B.E-R 图只能表示实体和实体之间的联系C.E-R 图只能表示实体和属性D.E-R 图能表示实体、属性和实体之间的联系
热门相关试卷
最新相关试卷扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
new 出来的对象本身在堆中,返回引用给栈中变量.如果不用new,对象在哪里.Clock &*c=new Clock(); &这个我懂.但是 C我就不知道存储在哪里2.&Sales_item(std::istream &is) { is && * }这个构造函数该怎么理解.谢谢热心人.分不多.
血盟流星7G
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
Clock c就是直接在栈上分配内存了假如这是构造函数,相当于调用了 cin && *this 不知道你这个对象是什么类型,如果没有定义这种对象的&&运算符, 需要定义友元函数 operator && (std::istream & is, TYPE& T)
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 std thread 参数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信