C++ 调试问题:对象包含与成员函数不兼容的类型限定符

技术C++ 调试问题:对象包含与成员函数不兼容的类型限定符 C++ 调试问题:对象包含与成员函数不兼容的类型限定符今天调试C++自定义String代码的时候,碰到一个问题,编译期报错:对象包含与成员函数

c调试问题:对象包含与成员函数不兼容的类型限定符。

今天在调试C自定义String代码的时候,遇到了一个问题,在编译的时候报告了一个错误:对象包含了一个与成员函数不兼容的类型限定符。

先看看代码:

类字符串{//自定义字符串类

公众号:

字符串(常量字符*

{//构造函数

if(!s){ 0

len=0;

str=新字符[1];

str[0]=0;

}

else {

len=strlen(s);

str=新字符[len 1];

strcpy(str,s);

}

}

~ String(){ delete[]Str;len=0;}//析构函数

int size(){ return len;}//字符数

字符串运算符=(常量字符串)

{//复制构造函数

if (this==s)返回* this

删除[]字符串;

len=s . size();

str=新字符[len 1];

strcpy(str,s . c _ str());

返回*这个;

}

const char *c_str()

{//获取C风格字符串

返回字符串;

}

私人:

char * str

int len

};

int main()

{

字符串名词(' book ');

字符串动词=名词;

cout noun . c _ str()endl;

cout动词. c _ str()endl;

返回0;

}

来自MSVC编译器的错误消息:

E1086对象包含与成员函数“String:size”不兼容的类型限定符

E1086对象包含与成员函数“String:c _ str”不兼容的类型限定符

问题在哪里?

问题似乎是在运算符=

我们知道,operator=左侧表达式类的内部成员会被修改,但右侧表达式类的内部成员不会被修改,所以只能调用等号右侧对象的const-limited函数(不是const的返回值),强制对象的内部状态不能被修改。

解决方案:向字符串String:size和字符串String:c _ str函数添加常量限定符:

类别字符串{ 0

公众号:

int size()const { return len;}

字符串运算符=(常量字符串)

{

if (this==s)返回* this

删除[]字符串;

len=s . size();

str=新字符[len 1];

strcpy(str,s . c _ str());

返回*这个;

}

const char *c_str() const

{

返回字符串;

}

.

};

.

总结:

在复制构造函数中,只能调用当前类的const限定符函数;

Const限定的成员函数只能调用const限定的成员函数,不能调用非const限定的成员函数,即使对象的内部状态没有被修改;

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/88699.html

(0)

相关推荐

  • 7272好看动漫排行,欧美新番女性最新排行是怎样的

    技术7272好看动漫排行,欧美新番女性最新排行是怎样的近日,外媒Anime Trending公布了关于“2020年春季新番动画第三周女性角色人气排行榜”,简单来说就是本周的“老婆榜”,想知道自己“老婆”的人气在欧美那边高

    生活 2021年10月26日
  • mysqldump怎么用

    技术mysqldump怎么用这篇文章主要介绍了mysqldump怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 一、创建

    攻略 2021年11月3日
  • 一个虫一个离,一个虫字旁加一个离子怎么读

    技术一个虫一个离,一个虫字旁加一个离子怎么读螭chī 部首笔画 部首:虫 部外笔画:10 总笔画:16 五笔86:JYBC 五笔98:JYRC 仓颉:LIYUB 笔顺编号:2512144134522554

    生活 2021年10月28日
  • 如何使用mafft进行多序列比对

    技术如何使用mafft进行多序列比对这篇文章给大家介绍如何使用mafft进行多序列比对,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对于几千条序列的多序列比对,无论是从准确度还是运行速度上考虑,mu

    攻略 2021年11月10日
  • 数据库分库分表之后该如何解决事务问题

    技术数据库分库分表之后该如何解决事务问题今天就跟大家聊聊有关数据库分库分表之后该如何解决事务问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、概述随着时间和业

    攻略 2021年12月1日
  • oracle rac环境安装目录权限被修改乱了怎么办

    技术oracle rac环境安装目录权限被修改乱了怎么办这篇文章将为大家详细讲解有关oracle rac环境安装目录权限被修改乱了怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在

    攻略 2021年12月4日