C++,错误:"const char *"类型的实参与"char *类型的形参不兼容"

举个例子说明我的代码
string data="123";
LPCTSTR macaddressvalue =chartowchar(data.data());
这个代码会报上述的错误,请问如何解决呢?

这是说明类型不兼容,强制转类型。在声明变量 char* 时改成 const char *即可。

当用户想在.h声明中定义成员变量,有时会报类型重定义错误,如果不是工程中真的重复定义了多个同名类,那么多半是没有给该类的头文件加条件指示符#ifndef。

条件指示符#ifndef 最主要的目的就是防止头文件的重复包含和编译,这样才能保证头文件被多个其他文件引用时,内部的数据不会被多次定义而造成错误。

扩展资料

C++ 中形参与实参区别:

1、形参出现在函数定义的地方,多个形参之间以逗号分隔,形参规定了一个函数所接受数据的类型和数量。

实参出现在函数调用的地方,实参的数量与类型与形参一样,实参用于初始化形参。

2、当形参是引用类型时,对应的实参被引用传递,引用形参是对应的实参的别名。

当实参的值被拷贝给形参时,形参和实参是两个相互独立的对象,对应的实参被值传递。

3、C++中,建议使用引用类型的形参替代指针,因为使用引用,形式上更简单,无须额外声明指针变量,也避免了拷贝指针的值。如果函数无须改变引用形参的值,最好将其声明为const引用。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-21
chartowchar不是库函数 , 是你自己定义的函数,定义的时候原型应该是:
wchar_t chartowchar( char* );
string::data( )返回的是const char* 从const char*到char*时不能直接转换的,
解决方式:
chartowchar( const_cast<char*>( data.data( ) );
但最好不要这样使用,建议将chartowchar的参数定义为const char*.本回答被网友采纳
第2个回答  2015-11-10
把 string data=“123” 修改成 char data[]="123"
相似回答