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