程序错误
#include<iostream.h>
class u
{
int k;
public:
u()
{
k=0;
}
u(i dx)
{
k=dx.hanshu();
}
void show()
{
cout<<k;
}
};
class i
{
int a;
public:
i(int h)
{
a=h;
}
int hanshu()
{
return a;
}
};
void main()
{
i c(10);
u d;
d=c;
d.show();
}
这个程序哪里有问题???为什么发生这些问题??
问题点数:20、回复次数:8Top
1 楼llf_hust()回复于 2006-02-25 11:08:53 得分 5
#include<iostream.h>
class i
{
int a;
public:
i(int h)
{
a=h;
}
int hanshu()
{
return a;
}
};
class u
{
int k;
public:
// friend class i;
u()
{
k=0;
}
u(i dx)
{
k=dx.hanshu();
}
void show()
{
cout<<k;
}
};
void main()
{
i c(10);
u d;
d=c;
d.show();
}
Top
2 楼ugg(逸学堂(exuetang.net))回复于 2006-02-25 13:01:19 得分 5
#include<iostream.h>
class i;// 在u中使用i需要先声明
class u
{
int k;
public:
u()
{
k=0;
}
u(i dx)
{
k=dx.hanshu();
}
void show()
{
cout<<k;
}
};
class i
{
int a;
public:
i1(int h)
{
a=h;
}
int hanshu()
{
return a;
}
};
void main()
{
i c(10);
u d(c);
//d=c;// 没有重载=号
d.show();
}
Top
3 楼zhNKUjw(淡淡的云彩悠悠的游)回复于 2006-02-25 21:46:27 得分 5
class i;// 在u中使用i需要先声明
在类u之前声明i也是不够的,因为类u的定义过程中用到了类i的对象。
C++规定,当一个类的对象被使用之前,该类必须被定义。
如果是这个类的指针或者引用的话,那么的话声明即可。
若想使用d=c,需要自己定义赋值运算符"="Top
4 楼ugg(逸学堂(exuetang.net))回复于 2006-02-25 22:56:17 得分 0
哦。学习了。
在VC7.1中,如果两个类定义在一个文件中。
class BB;
class AA
{
int ii;
public:
AA()
{
};
void fun(BB & b)// 这里是*,&对象都不对,必然把类BB放到AA前面
// 不然d:\project\test5\test5.cpp(22): error C2027: 使用了未定义类型“BB”
d:\project\test5\test5.cpp(22): error C2228: “.data”的左侧必须有类/结构/联合类型
{
ii = b.data;
}
};
class BB
{
public:
int data;
};Top
5 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-02-25 23:03:04 得分 5
楼主的程序编写class u时,里面公有函数里面的
u(i dx)
{
k=dx.hanshu();
}
没有首先声明类i~
所以编译器不可能知道i是什么东西或者是什么类型~~~
所以会出错~~~Top
6 楼yuchen2006(雨晨)回复于 2006-02-26 14:12:23 得分 0
ugg 我按照你的程序编译了一下,还是有错误,这是什么原因??
class i;// 在u中使用i需要先声明
在类u之前声明i也是不够的 ???那应该如何做,能把程序帮我改一下吗???
若想使用d=c,需要自己定义赋值运算符"=" //我用的构造函数来解决d=c的问题可以把?
帮我改一下程序
Top
7 楼yuchen2006(雨晨)回复于 2006-02-26 15:50:04 得分 0
明白了,应该类内定义转换构造,类外去写Top
8 楼ckp(surge)回复于 2006-02-26 15:55:10 得分 0
那么多代码,头晕了。Top





