[英]c++ compilation error
我收到了一個我不理解的編譯錯誤。 我有ah / cpp文件組合,其中不包含類,而僅定義了一些實用程序功能。 當我嘗試使用另一個類中定義的結構時,出現錯誤:
錯誤C2027:使用未定義類型'B :: C'
因此,簡單地解決了這個問題,h文件看起來像這樣
namespace A {
void foo(B::C::SStruct const & Var);
}
SStruct的定義在另一個h文件中的類中,該文件當然也包含在內。
namespace B {
class C {
public:
struct SStruct { };
};
}
奇怪的是,我可以在其他類中很好地使用此結構,這似乎與僅包含實用程序功能的一個h文件有關。 我在這里想念什么? 謝謝!
更正丟失的分號等后,將編譯:
namespace B {
class C {
public:
struct SStruct { };
};
}
namespace A {
void foo(B::C::SStruct const & Var);
}
顯然,如果切換了兩個名稱空間的順序,則將無法正常工作。 可能是您#錯誤地包含了標題。 如果這是錯誤,那是錯誤的設計-您不應允許標頭順序在您的代碼中起作用。
我假設您的意思是“ C類”,而不是“ C類”。
struct SStruct
對C類是私有的(private是類成員的默認可見性)。
因此,它在類C及其朋友之外不可見,該類不包括A :: foo()。
Class C {
struct SStruct { };
}
==>
class C {
public:
struct SStruct { };
};
您的班級在定義后缺少分號。 它應該是:
namespace B {
class C {
public:
struct SStruct { };
}; // <=== Here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.