我曾嘗試在方法聲明中使用構造函數作爲默認值,就像這樣:我可以使用構造函數或對象作爲其他類方法的參數默認值嗎?
A.hpp
#include "B.hpp"
class B;
Class A {
friend class B;
public:
A();
~A();
const A& operator = (const A& rhs) {
// assignment operations
return *this;
}
int do_something (B* pB);
};
B.hpp
#include "A.hpp"
class B {
public:
B(const A a = A());
~B();
};
我的GCC 4.8 C + +11編譯器不滿意該行B(const A a = A());
:
error: 'A' does not name a type error: ISO C++ forbids declaration of 'A' with no type [-fpermissive]
我需要一個默認值,我不想使用像B(A *a = NULL, int z = 0);
這樣的指針。
我也試圖聲明靜態元素,並使用該對象的默認值:
A.hpp
#include "B.hpp"
class B;
class A {
// ...
};
B.hpp
#include "A.hpp"
A a0;
class B {
public:
B(const A a = a0);
~B();
};
我得到完全同樣的錯誤。
我該如何做到這一點?
編輯:使代碼更接近真實的代碼。
這是你的真實密碼?類定義之後沒有分號。 – jrok
對不起,我在寫這個例子時錯過了。原來的代碼是正確的。所以,最初的問題仍然是一樣的。 – lalebarde
沒有足夠的信息,因爲它是。 [SSCCE](http://sscce.org)在這裏很有用。 – jrok