struct Person {
string FirstName;
string LastName;
};
class Builder {
public:
Person Builder::Build() {
Person person;
person.FirstName = "FirstName";
person.LastName = "LastName";
return person;
};
};
Когда я компилирую это, я получаю следующую ошибку:
'return' - структура имеет объекты и не может быть скопирована.
Мне просто нужно создать объект структуры или класса и вернуть его, я не хочу копировать.
Я пытался использовать комбинации & и *, но не работал. Я попытался использовать класс вместо struct, и он тоже не сработал.
Я также пробовал с классом, как показано ниже:
class Person {
public:
string FirstName;
string LastName;
};
class Builder {
public:
Person* Build() {
Person person;
person.FirstName = "FirstName";
person.LastName = "LastName";
return &person;
};
};
int OnInit()
{
Builder builder;
Person* person = builder.Build();
string firstName = person.FirstName;
return(INIT_SUCCEEDED);
}
И это дает мне недопустимый указатель доступа при доступе к person.FirstName в методе OnInit () во время выполнения.