[已解决][问题]g++没有匹配函数。。。
发表于 : 2008-05-29 1:42
知道的DX帮帮忙看看...必终生景仰之!!
如下,我用g++编译这个程序(课本上的源程序):
g++编辑器提示如下错误:
然后我把C=fun2()这行注释掉,再把倒数第三行改成
程序变成
编译却可以通过了,结果为:
看来错误出在这行上面
我把这个g++调试不过的程序发给群里一个正在用VC的朋友,却可以编译通过。。
我是c++和g++新手,不知道为什么g++会给我这个错误提示,DX给帮帮忙,谢谢!!
如下,我用g++编译这个程序(课本上的源程序):
代码: 全选
#include <iostream>
using namespace std;
class Point //类的定义
{
public: //外部接口
Point(int xx=0,int yy=0){X=xx;Y=yy;cout<<"构造函数被调用"<<endl;} //带默认形参的构造函数
Point(Point &p); //拷贝构造函数的声明
int GetX(void){return X;}
int GetY(void){return Y;}
private: //私有数据成员
int X,Y;
};
Point::Point(Point &p)
{
X=p.X;
Y=p.Y;
cout<<"拷贝构造函数被调用"<<endl;
}
Point fun2(void)
{
Point p(8,9);
cout<<"in fun2:"<<"p的坐标为:"<<p.GetX()<<','<<p.GetY()<<endl;
return p;
}
int main()
{
Point A(1,2);
Point B(4,5);
Point C;
C=fun2();
cout<<"A的坐标为:"<<A.GetX()<<','<<A.GetY()<<endl;
cout<<"B的坐标为:"<<B.GetX()<<','<<B.GetY()<<endl;
cout<<"C的坐标为:"<<C.GetX()<<','<<C.GetY()<<endl;
return 0;
}
代码: 全选
4-2point类.cpp: In function ‘int main()’:
4-2point类.cpp:35: 错误: 对‘Point::Point(Point)’的调用没有匹配的函数
4-2point类.cpp:16: 附注: 备选为: Point::Point(Point&)
4-2point类.cpp:8: 附注: Point::Point(int, int)
然后我把C=fun2()这行注释掉,再把倒数第三行改成
代码: 全选
cout<<"C的坐标为:"<<fun2().GetX()<<','<<fun2().GetY()<<endl;
代码: 全选
#include <iostream>
using namespace std;
class Point //类的定义
{
public: //外部接口
Point(int xx=0,int yy=0){X=xx;Y=yy;cout<<"构造函数被调用"<<endl;} //带默认形参的构造函数
Point(Point &p); //拷贝构造函数的声明
int GetX(void){return X;}
int GetY(void){return Y;}
private: //私有数据成员
int X,Y;
};
Point::Point(Point &p)
{
X=p.X;
Y=p.Y;
cout<<"拷贝构造函数被调用"<<endl;
}
Point fun2(void)
{
Point p(8,9);
cout<<"in fun2:"<<"p的坐标为:"<<p.GetX()<<','<<p.GetY()<<endl;
return p;
}
int main()
{
Point A(1,2);
Point B(4,5);
Point C;
// C=fun2();
cout<<"A的坐标为:"<<A.GetX()<<','<<A.GetY()<<endl;
cout<<"B的坐标为:"<<B.GetX()<<','<<B.GetY()<<endl;
cout<<"C的坐标为:"<<fun2().GetX()<<','<<fun2().GetY()<<endl;
return 0;
}
代码: 全选
构造函数被调用
构造函数被调用
构造函数被调用
A的坐标为:1,2
B的坐标为:4,5
构造函数被调用
in fun2:p的坐标为:8,9
构造函数被调用
in fun2:p的坐标为:8,9
C的坐标为:8,9
代码: 全选
C=fun2();
我把这个g++调试不过的程序发给群里一个正在用VC的朋友,却可以编译通过。。
我是c++和g++新手,不知道为什么g++会给我这个错误提示,DX给帮帮忙,谢谢!!