簡體   English   中英

C ++編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM