2017-11-18 151 views
0

我似乎有問題與qtcreator不自動完成我的代碼,這是變得非常討厭。當使用結構綁定時,qtcreator不自動完成?

目前是不能自動完成,當我嘗試在這樣的循環使用結構綁定..

std::vector<pair<string,AudioFile<double>>> list_of_files; 
// Some init of list_of_file 


for (const auto& [name,file]: this->list_of_files) // red line under this.. does seem to like structure bindings? 
{ 
    file.printSummary(); // qtcreator don't offer any autocomplete options? 

} 

qtcreator基本上抱怨大約上面貼的代碼一切..

但是,當我這樣寫:

for (int i = 0 ; i <list_of_file.size() ; i++) // No red lines under this.. 
{ 
    list_of_files[i].second.printSummary() // Autocompletes without any problems. 
} 

qtcreator不會抱怨這個代碼,似乎自動完成它就好了。那麼爲什麼會造成這麼多的問題毫秒與C + + 17風格?

對此有任何修復?

+0

難道只有QtCreator *編輯*它抱怨?或者你在建造時遇到錯誤?如果是前者,那麼可能是因爲編輯器尚未更新(或者您使用的是舊版本)。如果是後者,那麼你的編譯器不支持C++ 17,你可能需要明確地啓用它。 –

+0

你使用Qt自己的代碼模型還是叮噹代碼模型?您可以檢入工具 - >選項 - > C++ - >代碼模型。儘管從技術上講它並不重要,因爲它們都不支持C++ 17。 – nwp

+0

@Someprogrammerdude我還沒有嘗試過其他編輯器,並且我最近將qtcreator升級到最新版本5.9.2。代碼編譯,沒有錯誤。在兩個循環中都應該如此。 – Lamda

回答

0

這樣做的一個臨時解決方案似乎是這樣的 - 它的自動填充不抱怨,而且似乎適合我的定義(可讀性):

for (const auto &elements : this->list_of_files) 
{ 
    auto name = std::get<0>(elements); 
    auto file = std::get<1>(elements); 
} 
相關問題