我有一個「Foo.cpp」類和一個「Bar.cpp」類。我想在Foo的兩個參數上重載+操作符,以便添加兩個Foos返回一個Bar,其值是它們值的乘積。該代碼看起來像C++從類中的函數實例化不同的類
//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'沒有命名一個類型」)但是,我知道我不能在前面轉發declare Bar,因爲它只能用於指針,而我正在嘗試構建一個新的。有什麼方法可以讓這種類型的東西起作用,或者我是否完全錯誤?
謝謝!
我認爲像這樣定義運算符+函數可能會更好:Bar運算符+(const Foo&f1,const Foo&f2)。否則,你應該跟蹤Bar *,並且不能做出像f1 + f2 + B2這樣的東西。看看這個頁面http://users.cms.caltech.edu/~donnie/cs11/cpp/cpp-ops.html – phoad