我一直在做一個項目,並有好幾個班,其中一些看起來像這樣:故障參考變量/指針的類成員[C++]
class A
{
// stuff;
};
class B
{
A& test;
public:
B(A& _test) :
test(_test)
{};
void doStuff();
};
class C
{
A foo;
B bar(foo);
void exp()
{
bar.doStuff();
}
};
這最終打破當C :: foo不是類型名稱時,它是C類。在我更大的項目中,所有內容都分解成單獨的.cpp和.h文件,如果我在Bh中包含「Ch」,則看不到該錯誤,但在C.cpp中仍存在錯誤,完全無法識別我的編譯器(Visual Studio 2013)。即使A &是A *,錯誤仍然存在(當然,將代碼從引用更改爲必要的指針)。有沒有人有任何提示這裏發生了什麼?
「破」是什麼意思?編譯器錯誤?運行時錯誤?意外的結果? – wallyk
B bar(foo)具有編譯器錯誤(成員「C :: foo」不是類型名稱),最終導致編譯器錯誤的項目崩潰 – Airtamis
備註:您傳遞臨時副本到引用,您的B一個_test)'應該是'B(A&_test)'。 – vsoftco