walh12315 发表于 2020-11-15 21:11

哪位大神帮忙看看C++这个报错什么情况,本人新手

本帖最后由 walh12315 于 2020-12-30 14:10 编辑


哪位大哥帮忙看一下为什么会报错,谢谢了

EzGDNull 发表于 2020-11-16 00:12

#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;
}

亮哥vvv 发表于 2020-11-16 09:21

把默认构造函数实现了

walh12315 发表于 2020-11-16 09:34

EzGDNull 发表于 2020-11-16 00:12
#include
using namespace std;
class Person


大哥,还是不行,编译器我也换了2017和2019,会不会是我新建的步骤有问题啊?再帮忙review一下呗

我的步骤是直接新建一个c++空项目,然后添加"源.cpp"",最后把上面的代码直接写进去的

michaelgao 发表于 2020-11-16 09:38

本帖最后由 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;
}


walh12315 发表于 2020-11-16 09:41

亮哥vvv 发表于 2020-11-16 09:21
把默认构造函数实现了


Person::Person()
{

}
这样么?试过了也不行,二楼的方法我也试了,会不会是我新建项目的步骤有什么问题啊

walh12315 发表于 2020-11-16 10:00

好了,谢谢论坛的各位大家!!:Dweeqw

亮哥vvv 发表于 2020-11-16 10:05

walh12315 发表于 2020-11-16 09:41

Person::Person()
{


代码应该是没问题,就是你自定义了构造方法,那么默认构造方法就失效了,你需要自己重新实现,应该是你工程没有清理干净吧,你可以重新生成试一下,不行就清理一下中间文件,再不行你就在新建一个新的工程试一下。

walh12315 发表于 2020-11-16 10:08

michaelgao 发表于 2020-11-16 09:38
问题出在两个对象的构造上,即:Person temp;Person p3;
而默认构造函数,只是声明了一下,即Person();...

已经好了,谢谢你了{:1_893:},是构造函数的问题,按照各位提供的方法试了一遍就过了,由于昨天的代码没有卸载导致报错到其他project了,惭愧惭愧:wwqwq

walh12315 发表于 2020-11-16 10:12

亮哥vvv 发表于 2020-11-16 10:05
代码应该是没问题,就是你自定义了构造方法,那么默认构造方法就失效了,你需要自己重新实现,应该是你工 ...

已经好了,太感谢你了,是我没有卸载昨天的project,自己太粗心了:lol
页: [1]
查看完整版本: 哪位大神帮忙看看C++这个报错什么情况,本人新手