1

I created a class called person with the public member function fill_data which takes two arguments as char array and int . I passed the arguments like this fill_data("tushar",30); but there shows a warning deprecated conversion from string constant to 'char*' but I don't understand why, if any help me to know |

#include<iostream>
#include<cstring>
using namespace std;
class person
{
    char name[20];
    int age;
    public:
    void fill_data(char name2[],int age2)
    {
        strcpy(name,name2);
        age=age2;
    }
    void display_data(void)
    {
        cout<<name<<endl;
        cout<<age<<endl;
    }
};
int main()
{
    person p1;
    p1.fill_data("tushar",30);
    p1.display_data();

    return 0;
}
play store
  • 393
  • 1
  • 5

1 Answers1

2

You passed the string constant "tushar" to the function parameter char name2[], which is non-const. So in order to do this, the compiler had to convert the string constant to a char * (versus a const char *), which is deprecated.

If fill_data is not going to modify name2, the parameter should be const. If fill_data is going to modify whatever is passed as the name2 parameter, don't pass it a constant like "tushar".

Make up your mind and code one or the other.

David Schwartz
  • 179,497
  • 17
  • 214
  • 278