![](/img/trans.png)
[英]Argument of type “const char **” is incompatible with parameter of type “const 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.