声明了一个类

class Card

{

public:

Card(const string&);

int m_value;

char m_suit;

private:

const static map<char, int> m_map;

};

const map<char, int> Card::m_map=

{

{'2', 2},

{'3', 3},

{'4', 4},

{'5', 5},

{'6', 6},

{'7', 7},

{'8', 8},

{'9', 9},

{'T', 10},

{'J', 11},

{'Q', 12},

{'K', 13},

{'A', 14}

};

Card::Card( const string& p_cardVal)

{

    //m_value = Card::m_map[(p_cardVal[0]];

m_value = Card::m_map.at(p_cardVal[0]);

m_suit = p_cardVal[1];

}

红线部分会报错,显示error: passing ‘const std::map<char, int>’ as ‘this’ argument discards qualifiers [-fpermissive]

查看CPP reference 可以知道,map的[],都是非const 的,而m_map是const的对象,于是会报错。(见http://blog.csdn.net/xidwong/article/details/52754514)

T& operator[]( const Key& key );(1)
T& operator[]( Key&& key ); (2)

在map的成员函数中,at成员函数

T& at( const Key& key );(1)
const T& at( const Key& key ) const;(2)
因此使用下面的at便可以解决这个编译错误。

C++ 编译报错discards qualifiers [-fpermissive]的更多相关文章

  1. 使用C#模拟Outlook发送邮件,代码编译报错

    添加OutLook API using OutLook = Microsoft.Office.Interop.Outlook; 发送邮件方法 public void SendEmail() { Out ...

  2. cordova编译报错:Execution failed for task ':processDebugResources'

    cordova编译报错:Execution failed for task ':processDebugResources' 引发这个错误的最扩祸首就是一个中文命名的文件,不知道什么时候加入的,我写了 ...

  3. 编译报错dereferencing pointer to incomplete type

    关于编译报错“dereferencing pointer to incomplete type... 多是没找到结构体的定义,可以在本地复制其定义试试. 参考: http://my.oschina.n ...

  4. Maven-010-maven 编译报错:Failure to ... in ... was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced.

    今晚在编译 maven 项目的时候,命令行报错,出现 Failure to ... in ... 类似错误,详细的错误信息如下所示: [INFO] -------------------------- ...

  5. [Intellij] 编译报错 javacTask

    报错信息: Idea 编译报错 javacTask: 源发行版 1.6 需要目标发行版 1.6 解决方案:

  6. jenkis编译报错:需要class,interface或enum

    现象: 1.jenkis编译报错:需要class,interface或enum 2.使用ant进行编译ok. 解决方法: 1. Jenkis重新编译一个以前成功的svn版本,直至编译成功. 2.Jen ...

  7. 对arm指令集的疑惑,静态库运行,编译报错等问题

    转载自http://www.jianshu.com/p/4a70aa03a4ea?utm_campaign=hugo&utm_medium=reader_share&utm_conte ...

  8. xocde7下导入libsqlite3.tbd编译报错的解决办法

    在xocde7下没有libsqlite3.dylib,只有libsqlite3.tbd,然后我导入了tbd.编译报错error: /Applications/Xcode.app/Contents/De ...

  9. 关于vue-clidown到本地后,拷贝文件库到另外一台电脑上npm run dev编译报错的处理

    这些天自己在用vue-cli项目,在家里的电脑下下来后写了一些demo,拿到公司继续开发的时候发现删除node_modules文件,运行npm install和npm run 百度,搜狗了好久都没有找 ...

随机推荐

  1. SqlService性能检测和优化工具

    工具概要 如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而苦逼的你又要对其优化,那么你该怎么办?哥教你,首先你要知道问题出在哪里?如果想知道问 ...

  2. 搭建windows环境下(nginx+mysql+php)开发环境

    搭建windows环境下(nginx+mysql+php)开发环境   1. 所需准备应用程序包        1.1 nginx 程序包nginx-1.0.4.zip或其他版本(下载地址: http ...

  3. Tp框架 之对控制器的一些操作等

    在浏览器中输入tp框架入口文件的地址,如图 要注意,localhost/后面跟的是www的下一级,tp文件的上一级,因为我直接把tp文件做成了www目录的下一级,所以我写的地址localhost后面跟 ...

  4. Java集合学习笔记

      在Java中,我们经常听到Collections框架.Collection类以及Collections类.这三者名字相似,但是从概念上讲却是不同的.Collections框架泛指Java中用于存储 ...

  5. File类和时间类的两道综合练习

    练习1: 获取指定目录下(包含子目录)所有的某一种类型的文件 分析: 1.指定路径并获取其下的文件对象 2.要判断给定的目录是否为空 3.要判断给定路径下获取的目录是否为空 4.判断是否是某种文件 5 ...

  6. HTML+CSS-淘宝网页

    <html> <head> <meta http-equiv="Content-Type" content="text/html;chars ...

  7. vim 括号自动补全

    来源:http://www.cnblogs.com/huanlei/archive/2012/04/02/2430153.html 有时要重新配置vim 的,所以收藏了: inoremap ( ()& ...

  8. Jmeter接口压力测试

    SOAP百科:Soap简单对象访问协议,是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息.webServi ...

  9. Effective Modern C++ Item 37:确保std::thread在销毁时是unjoinable的

    下面这段代码,如果调用func,按照C++的标准,程序会被终止(std::terminate) void func() { std::thread t([] { std::chrono::micros ...

  10. js 的DOM操作 2017-03-21

    DOM(document object model) 文档对象模型 BOM(browse object model) 针对浏览器(如:弹出的窗口,滚动条等) 一.操作对象(注意大小写:注意elemen ...