Почему видает ошибку при передаче параметров в конструктор класа?

У меня есть код и мне видает ошибку когда я в конструктор передаю значения почему видает ошибку и как исправить ее?

#include <iostream>
#include "Windows.h"
using namespace std;
#include <cstring>


class TwoDShape {

double width; double height;

public:
void setw(double w) { width = w; }
void seth(double h) { height = h; }

double getw() { return width; }
double geth() { return height; }

};


class Triangle :public TwoDShape {

char style[20];
public:

Triangle(char *sto, double w,double h) {

    setw(w);
    seth(h);
    strcpy_s(style, sto);

}
double area() {
    return getw() * geth() / 2;
}


void showstyle() {
    cout << style << endl;
}


};


int main() {

SetConsoleOutputCP(1251);
SetConsoleCP(1251);

Triangle t1("garo", 15, 15);
cout<<t1.area();

return 0;
}

Ответы (2 шт):

Автор решения: Александр
Triangle(char *sto, double w,double h) 

поменять на

Triangle(const char *sto, double w,double h) 
→ Ссылка
Автор решения: Harry

Смотрите, объявив

Triangle(char *sto, double w,double h)

вы говорите тем самым: "я буду менять строку, на которую указывает sto". Неважно, делаете вы это или нет — вы подали заявку.

А передаете литерал "garo". Но менять литерал нельзя! отсюда и все проблемы.

Проще всего — раз вы не меняете строку sto — сказать об этом прямо:

Triangle(const char *sto, double w,double h)
→ Ссылка