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

相关文章
相关标签/搜索