類型的無效初始化我以爲我可以創建和填充一個C++的地圖是這樣的:錯誤:類型...的非const引用從臨時
39 int main(){
40
41 cout << "Approximate travelling salesman path finder." << endl;
42 cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl << endl;
43
44 map<City, OtherCities> database;
45 ReadInData(&database);
46 ...
47 }
作爲一個側面說明,ReadInData
功能只需要一個map<City, OtherCities>
引用作爲參數,其中City
只是字符串(城市的名稱)的typedef,而OtherCities
是包含表示其他城市及其與第一個城市距離的(string,int)對的優先級隊列。
總之,試圖編譯這將導致以下錯誤:
pr3.cpp: In function ‘int main()’:
pr3.cpp:45: error: invalid initialization of non-const reference of type ‘std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priority_queue<OtherCity, std::vector<OtherCity, std::allocator<OtherCity> >, std::greater<OtherCity> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priority_queue<OtherCity, std::vector<OtherCity, std::allocator<OtherCity> >, std::greater<OtherCity> > > > >&’ from a temporary of type ‘std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priority_queue<OtherCity, std::vector<OtherCity, std::allocator<OtherCity> >, std::greater<OtherCity> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priority_queue<OtherCity, std::vector<OtherCity, std::allocator<OtherCity> >, std::greater<OtherCity> > > > >*’
我在做什麼錯在這裏,和(除了使用禁忌全局變量),有另一種很好的方式,以保持該database
在主函數中並在其他地方填充/使用它?我不想只是按值傳遞的一個副本...
'database'是**不是** _uninitialized變量_。假設'map'是指'std :: map',它有一個默認的構造函數,'database'是_default construct_。 –
@ K-ballo:編輯。感謝您指出了這一點! :-) – nicole