无法将参数1从“const char [6]”转换为“char *”的解决方法
2018-03-12 21:01
931 查看
有一些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成功运行出来了
实例码:
#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成功运行出来了
相关文章推荐
- VS2010 error C2664: “GetModuleHandleW”: 不能将参数 1 从“const char [10]”转换为“LPCWSTR” 解决方法
- BOOL CreateProcessW: 无法将参数 2 从“char [4]”转换为“LPWSTR” 错误的解决方法
- error C2440: “=”: 无法从“const char (*__w64 )[17]”转换为“char *”
- LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 的解决方法
- 解决char *无法转换为LPCWSTR问题
- 无法将类型为“IList”的对象强制转换为类型“System.Data.DataRowView” 。的解决方法
- 修改静态参数scope=spfile错误,导致spfile文件被破坏,无法重启的解决方法
- VS解决error C2664: “DWORD GetCurrentDirectoryW(DWORD,LPWSTR)”: 无法将参数 2 从“char [260]”转换为“LPWSTR
- LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 的解决方法
- LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 的解决方法
- 出现无法将System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.DropDownList的解决方法
- 硬盘无法访问 D:\参数不正确不丢失数据解决方法 [记录]
- restful服务端无法获取post参数的解决方法
- SQL中函数返回表,传递一个参数,无法唤醒用户自定义函数,解决方法!
- oracle修改 11g processes参数导致:无法启动解决方法 shared memory realm does not exists
- 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型:解决方法
- 不能将参数 1 从“const char [5]”转换为“LPCTSTR”解决
- error C2664 无法将参数 从“const char []”转换为“LPCTSTR
- 解决GridView绑定时无法将类型为 <>f__AnonymousType0`2[xx] 的对象强制转换为类型“xxx”的方法
- 不能从const char指针转换为LPCWSTR的原因及解决方法