哪位大神帮忙看看C++这个报错什么情况,本人新手
本帖最后由 walh12315 于 2020-12-30 14:10 编辑哪位大哥帮忙看一下为什么会报错,谢谢了 #include<iostream>
using namespace std;
class Person
{
public:
Person():mA(0), mB(0) {}
~Person(){}
Person(int a, int b) :mA(a), mB(b) {}
Person operator +(Person &p)
{
Person temp;
temp.mA = this->mA + p.mA;
temp.mB = this->mB + p.mB;
return temp;
}
int mA;
int mB;
};
void test01()
{
Person p1(10, 15);
Person p2(20, 30);
Person p3;
p3 = p1 + p2;
cout << "P3 MA:" << p3.mA << "P3 MB:" << p3.mB << endl;
}
int main(void)
{
test01();
system("pause");
return 0;
} 把默认构造函数实现了 EzGDNull 发表于 2020-11-16 00:12
#include
using namespace std;
class Person
大哥,还是不行,编译器我也换了2017和2019,会不会是我新建的步骤有问题啊?再帮忙review一下呗
我的步骤是直接新建一个c++空项目,然后添加"源.cpp"",最后把上面的代码直接写进去的 本帖最后由 michaelgao 于 2020-11-16 09:39 编辑
问题出在两个对象的构造上,即:Person temp;Person p3;
而默认构造函数,只是声明了一下,即Person(); 没有具体实现:Person() {}
解决问题有两种方法:
方法一:如楼上EzGDNull朋友的代码,把默认构造函数实现
方法二:不使用默认构造函数,使用您已经定义的构造函数来生成对象:Person temp(0,0); Person p3(0, 0);
#include<iostream>
using namespace std;
class Person
{
public:
//Person() :mA(0), mB(0) {}
~Person() {}
Person(int a, int b) :mA(a), mB(b) {}
Person operator +(Person &p)
{
Person temp(0,0);
temp.mA = this->mA + p.mA;
temp.mB = this->mB + p.mB;
return temp;
}
int mA;
int mB;
};
void test01()
{
Person p1(10, 15);
Person p2(20, 30);
Person p3(0, 0);
//Person p3;
p3 = p1 + p2;
cout << "P3 MA:" << p3.mA << "P3 MB:" << p3.mB << endl;
}
int main(void)
{
test01();
system("pause");
return 0;
}
亮哥vvv 发表于 2020-11-16 09:21
把默认构造函数实现了
是
Person::Person()
{
}
这样么?试过了也不行,二楼的方法我也试了,会不会是我新建项目的步骤有什么问题啊 好了,谢谢论坛的各位大家!!:Dweeqw walh12315 发表于 2020-11-16 09:41
是
Person::Person()
{
代码应该是没问题,就是你自定义了构造方法,那么默认构造方法就失效了,你需要自己重新实现,应该是你工程没有清理干净吧,你可以重新生成试一下,不行就清理一下中间文件,再不行你就在新建一个新的工程试一下。 michaelgao 发表于 2020-11-16 09:38
问题出在两个对象的构造上,即:Person temp;Person p3;
而默认构造函数,只是声明了一下,即Person();...
已经好了,谢谢你了{:1_893:},是构造函数的问题,按照各位提供的方法试了一遍就过了,由于昨天的代码没有卸载导致报错到其他project了,惭愧惭愧:wwqwq 亮哥vvv 发表于 2020-11-16 10:05
代码应该是没问题,就是你自定义了构造方法,那么默认构造方法就失效了,你需要自己重新实现,应该是你工 ...
已经好了,太感谢你了,是我没有卸载昨天的project,自己太粗心了:lol
页:
[1]