我正試圖在linux和windows上構建我的項目。該項目已在Windows上工作,但我在GCC上遇到了一個非常奇怪的錯誤。請看下面的代碼:Visual Studio允許不相關的類方法訪問嵌套的私有類?
Class Base {
private:
MessageInfo *createMsg();
}
Class MessageInfo {
private:
class Message{
...
}
public:
Message *messages[MAX_NO_MESSAGES];
...
}
MessageInfo *Base::createMsg(){
...
MessageInfo *newMsg = new MessageInfo;
newMsg->messages[i] = new MessageInfo::Message();
...
}
現在的問題是,在Visual Studio中的每一件事編譯,但在GCC我得到以下錯誤:
*錯誤:類MessageInfo :: Message是私人
我真的很驚訝,代碼實際上編譯在Visual Studio中,但不是在GCC中。有什麼建議麼???
編輯:
我想我要問我的問題以更好的方式。我的問題是如何甚至有可能在VS 2005中編譯這樣的代碼?我在VS2013中試過我的代碼,它給了我和GCC一樣的錯誤。所以我不認爲代碼是正確的!
我很喜歡99%的GCC是正確的,Visual Studio是錯誤的,但我不能引用標準語言來達到這個效果,也不知道爲什麼Visual Studio會出錯 - 這是一個非常非常基本的方面的語言。 – zwol
你應該發佈一個MCVE。 – juanchopanza
您似乎在類MessageInfo中聲明瞭一個名爲private的類Message。我認爲GCC在這種情況下是正確的。 – Logicrat