簡體   English   中英

具有const char *和char *的無效參數類型

[英]invalid argument type with const char* and char*

我從另一個此項目相同的項目中得到了一個可行的示例,並且該示例可行。 但是由於這個項目中的某些原因,我無法做到這一點,並且我正在調試它。

我有一個帶有構造函數的父類:

Shape (char* _name, char*_colour);

然后,我繼續創建另一個使用Shape的構造函數的子類:

Square::Square(char* _colour, float _sideLength) : Shape("Square", _colour) 

我收到一個錯誤,指出const char *不起作用,特別是

:Shape("Square",_colour)

但我litterally有同樣事情用不同的項目做同樣的一種鑄造的,它沒有錯誤的作品。 我現在被嚇死了。

工作示例..

Car(char* whichType, int gasConsumption);

和一個兒童班

Minivan::Minivan(char* whoMade, int mpg, int seating, int space, char* whatColor) : Car("Minivan",mpg)

效果很好。 知道發生了什么嗎?

一種解釋可能是,一個項目使用的C ++標准早於C ++ 11,而另一個項目則使用C ++ 11或更高版本。

從C ++ 11開始,從字符串文字到char*隱式轉換格式不正確,因此不需要編譯器接受這種轉換。 在C ++ 11之前,隱式轉換已被棄用,但格式正確,因此要求編譯器接受該程序。

解決方法是改用const char*

試試以下-

char _name           = "YOUR_NAME";      // this is changed

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

Shape (char* _name, const char*_colour);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM