我正在为一堂课做一个小作业。我需要重载'+'运算符,将类对象的两个私有成员变量加在一起。类对象由类指针数组指向。我不太确定从哪里开始调试,但我的运算符重载函数会导致程序崩溃。
这是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]);
非常感谢任何帮助。
谢谢!