工程在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) 嚴格得多啊!~