我有一个“Foo.cpp”类和一个“Bar.cpp”类。我想在 Foo 的两个参数上重载 + 运算符,以便添加两个 Foos 返回一个 Bar ,其值是它们的值的乘积。代码看起来像
//Foo.h
class Foo
{
public:
double foo_val;
Foo();
Foo(double);
};
Bar* operator+ (Foo&, Foo&)
.
//Foo.cpp
#include "Foo.h"
Foo::Foo(){foo_val = 0;}
Foo::Foo(double d){foo_val = d;}
Bar* operator+ (Foo& f1, Foo& f2){
return new Bar(f1.foo_val*f2.foo_val);
}
.
#include "Foo.h"
#include "Bar.h"
int main(){
Foo f1 = new Foo(4, 5);
Foo f2 = new Foo(1, 2);
Bar = f1+f2;
}
Bar 目前与 Foo 基本相同,它有一个构造函数“Bar(double);”
目前它不起作用,我认为是因为在我尝试制作新的之前尚未定义 Bar。(编译器错误是“'Bar' 没有命名类型”)但是,我知道我不能在顶部转发声明 Bar,因为它只适用于指针,而我正在尝试构建一个新的。有什么方法可以让这种事情发挥作用,还是我完全错了?
谢谢!