#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又需要调用无参的构造(所以报错了)
一旦你提供了构造函数,那么系统将不再提供无参的默认构造函数,但是你的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);
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);