Поскольку это C ++, используйте std::string
вместо char*
:
struct my_struct{
int i;
std::string name;
};
class my_class{
my_struct* s1;
my_class() {
s1 = new my_struct;
s1->i = 10;
s1->name = "anyname";
}
};
Причина, по которой ваш исходный код был поврежден, состояла в том, что вам не удалось выделить память для s1
, а также не удалось выделить память для s1->name
. Я исправил первый с new
, а второй с помощью std::string
. Если по какой-то причине вы не можете использовать std::string
, используйте strdup
там, где вы пытались использовать strcpy
.
Наконец, не забудьте предоставить деструктор для my_class
, который удалит s1
(и освободит s1->name
, если вы выберете char*
и strdup
).