Почему видает ошибку при передаче параметров в конструктор класа?
У меня есть код и мне видает ошибку когда я в конструктор передаю значения почему видает ошибку и как исправить ее?
#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)