無法將引數1從“const char [6]”轉換為“char *”的解決方法
有一些C++程式在VS2017上執行會有一些錯誤,而在vc6.0中卻能執行出來。接下來的一個程式就是我在vs2017上執行出現錯誤,而在vc6.0上執行出來。但我已經通過分析vs2017上錯誤來源解決了該問題,並以此作為分享。
例項碼:
#include<iostream>
using namespace std;
class String
{
public:
String() { p = NULL; } //定義預設建構函式
String( char *str); //宣告建構函式
void display();
private:
char *p; //字元型指標,用於指向字串
};
String::String( char *str) //定義建構函式
{
p = str; //使p指向實參字串
}
void String::display()
{
cout << p;
}
int main()
{
String string1("Helle");
String string2("Book");
string1.display();
cout << endl;
string2.display();
cout << endl;
return 0;
}
在vs2017執行會顯示
從vs2017顯示的錯誤中看出,把形參改為常指標的話,就可以與實參相匹配了,所以可以把源程式改如下:
#include<iostream>
#include<string>
using namespace std;
class String
{
public:
String() { p = NULL; } //定義預設建構函式
String(const char *str); //宣告建構函式,把形參定義成常指標
void display();
private:
const char *p; //定義成常物件成員,用於指向字串
};
String::String(const char *str) //定義建構函式
{
p = str; //使p指向實參字串
}
void String::display()
{
cout << p;
}
int main()
{
String string1("Helle");
String string2("Book");
string1.display();
cout << endl;
string2.display();
cout << endl;
return 0;
}
這樣就能在vs2017成功執行出來了