C++ 编译报错discards qualifiers [-fpermissive]

C++:error: passing ‘const string’ as ‘this’ argument discards qualifiers [-fpermissive] const string 赋值错误。 阅读详情


声明了一个类

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.youkuaiyun.com/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便可以解决这个编译错误。


这个fpermissive 编译选项 千万不可以强制加上, 否则即使编译通过,运行结果可能和预期的有很大的区别。甚至会引起crash!!!!!!





Apollo自动驾驶开发笔记43——编译报错‘this’ argument discards qualifiers [-fpermissive] 我遇到的问题是在如下const修饰的一个函数里面。和const 修饰符有关。调用了另外一个函数。 阅读详情

相关推荐

原形网络(Prototypical Networks)基于PyTorch的实现

我在Jay2coomzz的基础上修改了数据处理方式和evaluation_model()方法,作为初学者若有不当之处恳请大家批评指正,原文链接如下: https://blog.youkuaiyun.com/weixin_38471579/article/details/102631018 数据集和源码链接将放到评论区 文章目录1 数据集一个简单的数据集介绍数据集处理2 搭建网络CNNProtonets 1 数据集 一个简单的数据集介绍 Omniglot数据集一共包含1623 类手写体,每一类中包含20 个样本。其中.

weixin_43872532的博客 6636

c++ discards qualifiers

在c++编译的时候,会出现discards qualifiers的错误提示这个错误的表示代码中,尝试修改const的变量,例如:1,给const的类成员赋值class person {private:    int age;public:    const int&amp; getAge() const    {        return age;    }    void setAge(con...

hongyd的博客 1万+

【同花顺公式编辑教程】第4章 功能函数

本章节主要给出大部分能够运行且常用的同花顺指标编辑器提供的函数。其中,计算类函数不作演示,绘图类函数提供示例及示例运行结果。

LiaoYi2016218的博客 2万+

【C++】error: passing ‘const xxx’ as ‘this’ argument discards qualifiers [-fpermissive]

1、错误信息分析 error: passing ‘const xxx’ as ‘this’ argument discards qualifiers [-fpermissive] 直译:错误:将“const xxx”作为“this”参数传递会丢弃限定词。 discards qualifiers:丢弃限定符,当尝试修改const类型时,会报discards qualifiers -fpermiss...

郭老二 4万+

深度学习中的编码器-解码器架构

解码的作用:转换为人类可理解的形式,解码器的任务是将编码器生成的中间表示(上下文向量)转换回人类可理解的输出形式(如翻译后的文本、生成的图像描述等)。解码器通过逐步生成输出序列,使得最终的输出符合人类的理解和需求。编码的作用:转换为机器可理解的形式,编码器将输入数据(如文本、图像等)转换为一种机器更容易处理和理解的形式,即上下文向量或编码。在深度学习中,编码器(Encoder)解码器(Decoder)是常见的神经网络架构,通常用于处理序列到序列(seq2seq)任务,如机器翻译、文本摘要和图像描述等。

xxk1323的博客 1093

AI 代码生成工具的质量评估体系

基础需求层包括响应速度(Response Time)和界面友好性(UI Friendliness),期望需求层涵盖智能提示(Smart Suggestions)和个性化配置(Personalization),兴奋需求层则涉及多模态交互(Multimodal Interaction)和代码进化(Code Evolution)。在金融领域,代码审计合规性(Compliance Audit)权重应提升至40%,而在Web开发中,API兼容性(API Compatibility)的权重需达到35%。

2503_92418637的博客 3374

discards qualifiers —— 丢弃类型

为什么80%的码农都做不了架构师?>>> ...

weixin_34132768的博客 1946

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1877

passing '' as 'this' argument discards qualifiers [-fpermissive]

本文主要参考了 const放置的位置   https://blog.youkuaiyun.com/caojunhao123/article/details/43699873 C++编译程序出现了这个错误“passing '' as 'this' argument discards qualifiers [-fpermissive]” 其实主要原因还是在const这个限定符上 ,代码中从父类继承来的纯虚...

Pabebe的博客 2万+

使用abagen工具箱获取基于脑区的基因表达矩阵

脑区模板定义了您感兴趣的脑区的空间位置。abagen提供了一些预定义的脑区模板,您可以选择使用,也可以使用自定义的脑区模板。它提供了一种简便的方式来获取基于脑区的基因表达矩阵。abagen需要使用Allen脑图谱数据来获取基因表达矩阵。您可以使用abagen内置的下载功能来获取这些数据。这就是使用abagen工具箱获取基于脑区的基因表达矩阵的详细步骤。通过按照上述步骤操作,您可以轻松获取并使用Allen脑图谱数据中的基因表达信息。一旦您加载了脑区模板,您可以使用abagen来获取基于脑区的基因表达矩阵。

web_bug407的博客 1326

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

passing ‘const xxx‘ as ‘this‘ argument discards qualifiers [-fpermissive]

文章目录报错代码报错原因解决方案 报错代码 #include<iostream> using namespace std; class Complex{ private: double r,i; public: Complex(double _r,double _i=0):r(_r),i(_i){} double re() {return r;} double im() {return i;} void print(){ cout <

weixin_53366150的博客 895

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

error: passing ‘const xxx’ as ‘this’ argument discards qualifiers [-fpermissive]的解决方案

先上错误: ../include/rectangle.h:Ininstantiationof'R_START_TREE::Rectangle<dimensions>&R_START_TREE::Rectangle<dimensions>::operator=(constR_START_TREE::Rectangle<dimensions>&)[withlonglongunsignedintdimensions=3]': r...

jinking01的专栏 5775

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++编译出错discards qualifiers [-fpermissive]

C++编译错误discards qualifiers [-fpermissive] 及解决办法。

有风楠来的博客 3万+

数据结构-链式栈

编译错误:passing ‘const LinkStack’ as ‘this’ argument discards qualifiers [-fpermissive] 解决方法:C++中const 引用的是对象时只能访问该对象的const 函数,因为其他函数有可能会修改该对象的成员,编译器为了避免该类事情发生,会认为调用非const函数是错误的。 函数末尾加const,表示不会修改该对象的成员

工作学习记录 557

C++遇到的bug总结

1. error: passing ‘const xxx’ as ‘this’ argument discards qualifiers [-fpermissive] 分析:const修饰实例对象调用了非const修饰的成员方法。 解决方案:将对象变为非const的,或者使用const修饰成员方法 2.error: 'xxx' does not name a type 在复现《C++ Primer》书中的Text Queries源码时,由于多个头文件...

oreo的博客 3204

discard qualifiers的错误

写代码时,没有注意到或者说不清楚的问题,discard qualifiers的问题,网上有人碰到此类问题并附介绍: For my compsci class, I am implementing a Stack template class, but have run into an odd error: Stack.h: In member function ‘const T

wofly_0909的专栏 2590

discards qualifiers || new types may not be defined in a return type|| shadows a parameter

在C/C++重编译错误new types may not be defined in a return type TcpServer.cpp:29: error: new types may not be defined in a return type 这种错误的解决:就是在这个#include中某一个头文件的class定义最后没有打; 添上后,就解决了。

三少GG 2645

c++编译时出现discards qualifiers [-fpermissive]的错误

代码: class HasPtr{ public: HasPtr(const string &amp;s = string()):ps(new string(s)),i(0){} HasPtr(const HasPtr &amp;p){ ps = new string(p.getPs()); i = p.i; } const s...

zhiyuanjiang的博客 6798

讲解error: jump to label [-fpermissive]

"error: jump to label [-fpermissive]" 错误是在编译器遇到跳转语句时,表明编译器默认情况下不容忍该类型语句的错误信息。我们可以通过添加标志或者重构代码来解决这个错误。重构代码通常是更好的解决方案,因为它能够改善代码质量并提高可读性和维护性。在编写代码时,避免使用跳转语句是一个良好的编码习惯,可以有效避免这种错误的发生。

牛肉胡辣汤 4461

gcc编译报 “discards qualifiers [-fpermissive]”

struct Base { Base() { std::cout << " Base::Base()\n"; } virtual ~Base() { std::cout << " Base::~Base()\n"; } virtual void test() { std::cout<< " test in base\n"; } };void MyTest(const Ba

xidwong的专栏 1万+

【C++】error: passing ‘const xxx’ as ‘this’ argument discards qualifiers

函数,因为其他函数有可能会修改该对象的成员,编译器为了避免该类事情发生,会认为。限定符的成员函数中,不能够调用非const成员函数。错误的原因就是,C++中。的意思就是缺少限定符。意思是说在一个加了。...

悟已往之不谏,知来者之可追 9770

报错const passing as ‘this‘ argument discards qualifiers [-fpermissive]的

一般是const函数或变量中使用了非const的函数。

南北粉面馆 2004

实参时丢弃了类型 discards qualifiers discards qualifiers问题

今晚中秋之夜,苦逼的程序员只能呆在寝室。 正无聊的时候,想起最近学的数据结构,想完善一下代码,于是想给线性表重载一下 Out() [cpp] view plaincopy templateclass T>       void LineList::Out(ostream& os)       {           

无物无我,无心无相。宠辱不惊,欲求两忘。狂野一生,放眼一量。 2842
上一篇: trigraph
下一篇: c++ Lambda函数学习
killmice
博客等级 码龄14年 119粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值