为什么这个方法代码不采用整数作为它的参数

时间:2016-05-02 14:01:17

标签: c++

我只是想设计一个类来设置和获取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;
}

1 个答案:

答案 0 :(得分:3)

  

我已按预期传递与函数的实际参数相同的数据类型。

没有。 "asdf" string literal的类型为const char[5],可能会衰减为const char*,但不会char *

  

在C中,字符串文字的类型为char[],可以直接分配给(非常量)char*。 C ++ 03也允许它(但不赞成它,因为文字在C ++中是const)。没有强制转换,C ++ 11不再允许这样的赋值。