2015-09-09 50 views
1

當我的Xcode項目與.mm文件編譯得到多個錯誤,並且所有的錯誤是相同的"Default initialization of an object of const type 'NSString *const __strong'",它建議把=nil。一些.cpp文件也包含在內,而.mm當我把C++代碼放在.mm中時,這些錯誤並沒有出現。 我們都知道,如果我們把.mm它編譯Objective-C和C++。這些錯誤大多與NSString *const object;種初始化有關。我不想在此之前放置外部或者對其進行一些其他修改,因爲這些類別由客戶端在岸團隊編寫,所以我不應該觸及這些類別。const類型'NSString * const __strong'的對象的默認初始化?

回答

3

的聲明如

NSString *const object; 

object是常數指針NSString對象。注意詞常數指針,即一個恆定的指針,並且不能被修改。

這樣的指針必須在定義的時候被初始化,否則它將永遠未初始化(或者如果在全局範圍中定義,則初始化爲零)。稍後您不能指定它來初始化它。

如果您有其他翻譯單元/模塊中聲明這樣的變量,那麼你就必須使用extern關鍵字明確地告訴編譯器,這是存在(並初始化)一個變量的聲明在別處。

+0

NSString * const object;工作良好只出現在我編譯C++代碼時.mm @joachim pileborg –

+0

@Codecracker我認爲「工作好」是一種誇張,因爲它永遠不會被賦予一個有效的值。 – molbdnilo

+0

是的,當然,我會要求陸上團隊做進一步的修改,謝謝你的回覆@molbdnilo –

相關問題