我只是想设计一个类来设置和获取C ++学生的详细信息。
因此,为了设置学生的详细信息,我调用了set_data(name,roll)
方法。但是这个编译错误即将到来。我已经按照预期的方式传递了与函数的实际参数相同的数据类型。我无法理解为什么会出现错误。
G:\>g++ 5.cpp
5.cpp: In function 'int main()'
5.cpp:26:23: warning: deprecate
rite-strings]
obj.set_data("asdf",15);
代码是---
#include<iostream>
using namespace std;
#include<string.h>
#include<stdlib.h>
class pntr_obj
{
char *name;
int roll;
public:
void set_data(char *name,int roll)
{
this->name=name;
this->roll=roll;
}
void print()
{
cout<<"name is "<<this->name<<endl;
cout<<"roll is "<<this->roll<<endl;
}
};
int main()
{
pntr_obj obj;
obj.set_data("asdf",15);
obj.print();
return 0;
}
答案 0 :(得分:3)
我已按预期传递与函数的实际参数相同的数据类型。
没有。 "asdf"
string literal的类型为const char[5]
,可能会衰减为const char*
,但不会char *
。
在C中,字符串文字的类型为
char[]
,可以直接分配给(非常量)char*
。 C ++ 03也允许它(但不赞成它,因为文字在C ++中是const)。没有强制转换,C ++ 11不再允许这样的赋值。