运算符重载+与类对象C ++的指针数组

时间:2017-12-09 22:55:46

标签: c++ arrays pointers operator-overloading

我正在为一堂课做一个小作业。我需要重载'+'运算符,将类对象的两个私有成员变量加在一起。类对象由类指针数组指向。我不太确定从哪里开始调试,但我的运算符重载函数会导致程序崩溃。

这是main.cpp(暂时忽略printObjects和freeObjects。)

#include <iostream>

#include "Foo.h"

using namespace std;

void createObjects(Foo* fooArr[3], Foo* newFoo);
void printObjects(Foo* fooArr[3], Foo newFoo);
void freeObjects(Foo* fooArr[3], Foo newFoo);

int main()
{
    Foo *fooArr[3] = { 0 };
    Foo *newFoo = 0;
    createObjects(&fooArr[3], newFoo);
    Foo f1 = *(fooArr[1]) + *(fooArr[2]);
    f1.outputX();
}

void createObjects(Foo* fooArr[3], Foo* newFoo)
{

    for (int i = 0; i < 3; i++)
    {
        newFoo = new Foo(i+1);
        fooArr[i] = newFoo;
    }
}

这是Foo.h:

using namespace std;

class Foo
{
private:
    int x;

public:

    Foo();
    Foo(int);
    void setX(int);
    const int getX();
    void outputX();
    Foo operator+(const Foo&) const;
};

最后这里是foo.cpp:

#include <iostream>

using namespace std;

#include "Foo.h"


Foo::Foo(int x_)
{
    x = x_;
}
void Foo::setX(int x_)
{
    x = x_;
}
const int Foo::getX()
{
    return x;
}
void Foo::outputX()
{
    cout << x << endl;
}
Foo Foo::operator+(const Foo& f2) const
{
    Foo f3(0);
    f3.x = x + f2.x;
    return f3.x;    
}

程序在调用operator + overload函数后立即崩溃(segFault)。现在我知道这意味着我正在尝试访问程序实际上无法访问的内存。但是,我只是不知道如何设计运算符重载语句以使用函数调用:

 Foo f1 = *(fooArr[1]) + *(fooArr[2]);

非常感谢任何帮助。

谢谢!

0 个答案:

没有答案