construction const parameter問題 構造函數const引用參數問題

工程在window下編譯沒有任何問題, 可是在linux(CentOS6)下編譯就總是報錯linux

C++ 編譯器已升級到最新版 6.1.0
c++

錯誤以下:less

In file included from /usr/local/include/c++/6.1.0/bits/stl_algobase.h:64:0,
                 from /usr/local/include/c++/6.1.0/bits/char_traits.h:39,
                 from /usr/local/include/c++/6.1.0/string:40,
                 from CTIServer.h:5,
                 from CTIServer.cpp:2:
/usr/local/include/c++/6.1.0/bits/stl_pair.h: In instantiation of ‘struct std::pair<const std::__cxx11::basic_string<char>, ExtUsrInfo>’:
CTIServer.cpp:354:15:   required from here
/usr/local/include/c++/6.1.0/bits/stl_pair.h:224:17: 錯誤:‘constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const std::__cxx11::basic_string<char>; _T2 = ExtUsrInfo]’被聲明爲取常量引用,可是隱式聲明取很是量引用
       constexpr pair(const pair&) = default;
                 ^~~~
/usr/local/include/c++/6.1.0/bits/stl_pair.h: In instantiation of ‘struct std::pair<const std::__cxx11::basic_string<char>, Confrence>’:
CTIServer.cpp:431:60:   required from here
/usr/local/include/c++/6.1.0/bits/stl_pair.h:224:17: 錯誤:‘constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const std::__cxx11::basic_string<char>; _T2 = Confrence]’被聲明爲取常量引用,可是隱式聲明取很是量引用
make: *** [CTIServer.o] 錯誤 1

 無論怎麼改都是報這個錯誤,函數

    感受過不去這個坎了~~~ui

錯誤源代碼就是在這一行,中間的不等於表達式:spa

for(pos=m_ExtUsrInfoList.begin();pos!=m_ExtUsrInfoList.end();pos++)

 

 而後 , 由於升級到C++11了嘛,改用 for:auto 方式循環,仍是同樣這一行報錯, 折騰的沒門 , code

因而懷疑C++11的問題?blog

因而 找了個 C++沒升級的試試,結果以下:編譯器

In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algobase.h:66,
                 from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/char_traits.h:41,
                 from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/string:42,
                 from CTIServer.h:5,
                 from CTIServer.cpp:2:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h: In constructor ‘std::pair<_T1, _T2>::pair(const _T1&, const _T2&) [with _T1 = const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _T2 = ExtUsrInfo]’:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_map.h:450:   instantiated from ‘_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Tp = ExtUsrInfo, _Compare = std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, ExtUsrInfo> >]’
CTIServer.cpp:340:   instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h:84: 錯誤:對‘ExtUsrInfo::ExtUsrInfo(const ExtUsrInfo&)’的調用沒有匹配的函數
CTIServer.h:56: 附註:備選爲: ExtUsrInfo::ExtUsrInfo(ExtUsrInfo*)
CTIServer.h:55: 附註:        ExtUsrInfo::ExtUsrInfo(ExtUsrInfo&)
CTIServer.h:54: 附註:        ExtUsrInfo::ExtUsrInfo()

  看到後面string

錯誤:對‘ExtUsrInfo::ExtUsrInfo(const ExtUsrInfo&)’的調用沒有匹配的函數
CTIServer.h:56: 附註:備選爲: ExtUsrInfo::ExtUsrInfo(ExtUsrInfo*) CTIServer.h:55: 附註: ExtUsrInfo::ExtUsrInfo(ExtUsrInfo&) CTIServer.h:54: 附註: ExtUsrInfo::ExtUsrInfo()

貌似終於發現了點什麼, 哈哈, 你妹的, 構造函數沒有 參數 是const類型的
const ExtUsrInfo&
!!!!

終於找到了,  可是還得感謝C++4.4.7 版本的 錯誤提示,  C++11 的錯誤 仍是難看懂!~

PS:  linux下的 編譯檢查 要比 window下 的(VS) 嚴格得多啊!~

相關文章
相關標籤/搜索