首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有常量char*和char*的参数类型无效

带有常量char*和char*的参数类型无效
EN

Stack Overflow用户
提问于 2019-03-18 08:50:23
回答 2查看 146关注 0票数 0

我有一个来自另一个项目的工作示例,它与此相同,并且它是有效的。但由于某些原因,在这个项目中,我不能这样做,我正在经历一段地狱般的调试时间。

我有一个带有构造函数的父类:

代码语言:javascript
运行
复制
Shape (char* _name, char*_colour);

然后,我继续创建另一个使用Shape的构造函数的子类:

代码语言:javascript
运行
复制
Square::Square(char* _colour, float _sideLength) : Shape("Square", _colour) 

我得到一个const char*不起作用的错误,特别是

:Shape("Square",_colour)

但是我用完全相同的和一个不同的项目做同样的事情,做完全相同的类型转换,并且它没有bug。我现在被打动了。

工作示例..

代码语言:javascript
运行
复制
Car(char* whichType, int gasConsumption);

和一个子类

代码语言:javascript
运行
复制
Minivan::Minivan(char* whoMade, int mpg, int seating, int space, char* whatColor) : Car("Minivan",mpg)

它工作得很好。知道这是怎么回事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-18 08:57:05

一种解释可能是,一个项目使用比C++11更早的C++标准,而另一个项目使用C++11或更高版本的标准。

由于C++11,从字符串到char*的隐式转换是错误的,因此编译器不需要接受这样的转换。在C++11之前,隐式转换已被弃用,但格式良好,因此需要编译器才能接受程序。

修复方法是改用const char*

票数 1
EN

Stack Overflow用户

发布于 2019-03-18 08:59:30

尝试以下操作-

代码语言:javascript
运行
复制
char _name           = "YOUR_NAME";      // this is changed

const char* colour  = "YOUR_COLOUR";  // this is fine

Shape (char* _name, const char*_colour);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55213438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档