工程在window下编译没有任何问题, 但是在linux(CentOS6)下编译就老是报错

C++ 编译器已升级到最新版 6.1.0

错误如下:

In file included from /usr/local/include/c++/6.1./bits/stl_algobase.h::,
from /usr/local/include/c++/6.1./bits/char_traits.h:,
from /usr/local/include/c++/6.1./string:,
from CTIServer.h:,
from CTIServer.cpp::
/usr/local/include/c++/6.1./bits/stl_pair.h: In instantiation of ‘struct std::pair<const std::__cxx11::basic_string<char>, ExtUsrInfo>’:
CTIServer.cpp::: required from here
/usr/local/include/c++/6.1./bits/stl_pair.h::: 错误:‘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./bits/stl_pair.h: In instantiation of ‘struct std::pair<const std::__cxx11::basic_string<char>, Confrence>’:
CTIServer.cpp::: required from here
/usr/local/include/c++/6.1./bits/stl_pair.h::: 错误:‘constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const std::__cxx11::basic_string<char>; _T2 = Confrence]’被声明为取常量引用,但是隐式声明取非常量引用
make: *** [CTIServer.o] 错误

 不管怎么改都是报这个错误,

感觉过不去这个坎了~~~

错误源代码就是在这一行,中间的不等于表达式:

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

 然后 , 因为升级到C++11了嘛,改用 for:auto 方式循环,还是一样这一行报错, 折腾的没门 ,

于是怀疑C++11的问题?

于是 找了个 C++没升级的试试,结果如下:

In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4./../../../../include/c++/4.4./bits/stl_algobase.h:,
from /usr/lib/gcc/x86_64-redhat-linux/4.4./../../../../include/c++/4.4./bits/char_traits.h:,
from /usr/lib/gcc/x86_64-redhat-linux/4.4./../../../../include/c++/4.4./string:,
from CTIServer.h:,
from CTIServer.cpp::
/usr/lib/gcc/x86_64-redhat-linux/4.4./../../../../include/c++/4.4./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./../../../../include/c++/4.4./bits/stl_map.h:: 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:: instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.4./../../../../include/c++/4.4./bits/stl_pair.h:: 错误:对‘ExtUsrInfo::ExtUsrInfo(const ExtUsrInfo&)’的调用没有匹配的函数
CTIServer.h:: 附注:备选为: ExtUsrInfo::ExtUsrInfo(ExtUsrInfo*)
CTIServer.h:: 附注: ExtUsrInfo::ExtUsrInfo(ExtUsrInfo&)
CTIServer.h:: 附注: ExtUsrInfo::ExtUsrInfo()

看到后面

错误:对‘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) 严格得多啊!~

construction const parameter问题 构造函数const引用参数问题的更多相关文章

  1. 非const引用参数传入不同类型编译不过的理解(拒绝将临时对象绑定为非const的引用的形参是有道理的)

    int f (int & I) { cout<<I<<std::endl; } void main() { long L; f(L); // 编译不过 f((int)L ...

  2. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  3. const参数,const返回值与const函数

    在C++程序中,经常用const 来限制对一个对象的操作,例如,将一个变量定义为const 的: const  int  n=3; 则这个变量的值不能被修改,即不能对变量赋值. const 这个关键字 ...

  4. c++中的const参数,const变量,const指针,const对象,以及const成员函数

    const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whe ...

  5. Const指针 、 指向const的指针 、引用、指针

    1. const指针和 指向const的指针 指向const的指针: 不允许通过指针来改变其指向的const值 const double *cptr *cptr = 42;  // error! 指针 ...

  6. 常量函数、常量引用参数、常量引用返回值[C++]

    1. 关于常量引用正像在C语言中使用指针一样,C++中通常使用引用 有一个函数... foo()并且这个函数返回一个引用...... & foo()...., 一个指向位图(Bitmap)的引 ...

  7. C#的值参数与引用参数

    值参数:在使用值参数时,是把变量的值传给函数,函数中对此变量的任何修改都不影响该变量本身的值. 引用参数:使用引用参数时,在函数中对此变量的修改会影响变量的值. 说简单点,值参数,就是我把身份证复印件 ...

  8. C++ const用法 尽可能使用const [转载]

    C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的.如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助. 1.c ...

  9. const 指针与指向const的指针

    最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~ const指针的定义: const指针是指针变量的值一经初始化,就不可以改变 ...

随机推荐

  1. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  2. 探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  3. PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server)

    在PowerDesigner中的设计SQL Server 数据表时,要求通过vbScript脚本实现下面的功能: 主键:pk_TableName 外键:fk_TableName_ForeignKeyC ...

  4. [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密

    string 与 String,大 S 与小 S 之间没有什么不可言说的秘密 目录 小写 string 与大写 String 声明与初始化 string string 的不可变性 正则 string ...

  5. iOS逆向工程之Hopper中的ARM指令

    虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...

  6. ASP.NET Core project.json imports 是什么意思?

    示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...

  7. SignalR系列目录

    [置顶]用SignalR 2.0开发客服系统[系列1:实现群发通讯] [置顶]用SignalR 2.0开发客服系统[系列2:实现聊天室] [置顶]用SignalR 2.0开发客服系统[系列3:实现点对 ...

  8. EC笔记:第4部分:21、必须返回对象时,别返回引用

    使用应用可以大幅减少构造函数与析构函数的调用次数,但是引用不可以滥用. 如下: struct St { int a; }; St &func(){ St t; return t; } 在返回t ...

  9. java统计字符串单词的个数

    在一些项目中可能需要对一段字符串中的单词进行统计,我在这里写了一个简单的demo,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...

  10. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...