Как исправить C аргумент типа «const char *» несовместим с параметром типа «char *»

#string #class #pointers #reference #char

#строка #класс #указатели #ссылка #char

Вопрос:

Я использую vs2019, и у меня проблема, компилятор выдает мне ошибку, однако я не могу ее решить, пожалуйста, помогите мне. ошибка: аргумент типа «const char *» несовместим с параметром типа «char *»

Цитата из блока

    ***  #include <iostream>
#include<cstring>
using namespace std;
class part
{
public:
    char partname[30];
    int partnumber;
    double cost;
    void setpart(char pname[], int pn, double c)
    {
        strcpy_s(partname, pname);
        partnumber = pn;
        cost = c;
    }
    void showpart()const
    {
        cout << "npartname : " << partname;
        cout << "npartnumber : " << partnumber;
        cout << "ncost($) : " << cost;
    }
};
int main()
{
    part part1, part2;
    part1.setpart("handle bolt", 467, 4500);
    part2.setpart("start lever", 549, 2300);
    cout << "nFirst part : "; part1.showpart();
    cout << "nSecond part : "; part2.showpart();
}***
  

Ответ №1:

Строки, которые вы предоставляете setpart, являются строками const ( const char *) . Но часть set принимает символ * в качестве параметра. Поскольку pname не будет изменен в вашем примере, вы можете заменить void setpart(char pname[], int pn, double c) на void setpart(const char pname[], int pn, double c)

Комментарии:

1. это верно, чувак, но я пробовал это раньше, однако это не сработало. большое вам спасибо, теперь это работает.