刚开始学者遇到不理解的问题。求帮助

C++语言 码拜 8年前 (2016-04-06) 810次浏览
#include<iostream>
using namespace std;
class Location{
	public:
	Location(int m,int n)//构造函数
	{
		X = m;
		Y = n;
	}
	void Init(int initX,int initY)//定义带有两个参数的成员函数
	{
		X = initX;
		Y = initY;
	}
	int GetX()
	{
		return X;
	}
	int GetY()
	{
		return Y;
	}
	private:
	int X,Y;
};
int main()
{
	Location A3;
	A3.Init(785,980);//调用公有函数成员init,分别给数据成员X和Y赋值785和980
	cout<<A3.GetX()<<" "<<A3.GetY()<<endl;
	return 0;
}

这里发生了一个错误
error C2512: “Location” : no appropriate default constructor available
是不是建立一个空的构造函数就行了  怎么加上去呢?或是其他别的问题?
新手没有分啦  大家将就一点吧~

解决方案

20

加一个空的构造就行。
一旦你提供了构造函数,那么系统将不再提供无参的默认构造函数,但是你的A3又需要调用无参的构造(所以报错了)

#include<iostream>
using namespace std;
class Location{
public:
	Location(){}
	Location(int m, int n)//构造函数
	{
		X = m;
		Y = n;
	}
	void Init(int initX, int initY)//定义带有两个参数的成员函数
	{
		X = initX;
		Y = initY;
	}
	int GetX()
	{
		return X;
	}
	int GetY()
	{
		return Y;
	}
private:
	int X, Y;
};
int main()
{
	Location A3;
	A3.Init(785, 980);//调用公有函数成员init,分别给数据成员X和Y赋值785和980
	cout << A3.GetX() << " " << A3.GetY() << endl;
	return 0;
}

10

实例化对象不对。
int main()
{
Location A3;
A3.Init(785,980);//调用公有函数成员init,分别给数据成员X和Y赋值785和980
cout<<A3.GetX()<<” “<<A3.GetY()<<endl;
return 0;
}
你的构造函数是
Location(int m,int n)//构造函数
{
X = m;
Y = n;
}
而你在构造对象时却使用了默认的构造函数,所以会出现编译错误。
2个解决办法:
1、删掉构造函数。
2、将    Location A3;语句改成    Location A3(785,980);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明刚开始学者遇到不理解的问题。求帮助
喜欢 (0)
[1034331897@qq.com]
分享 (0)