Вы не можете привязывать непостоянную ссылку к временному объекту, и, например, в этом объявлении правая сторона является временным объектом
Laptop myLaptop = Laptop("Asus", "Zenbook", 16, 2048);
Объявите копию как
Laptop( const Laptop &x)
{
this->brand = x.brand;
this->model = x.model;
this->ram = x.ram;
this->storage = x.storage;
}
Или добавьте конструктор перемещения.
Учтите, что вам нужно включить заголовок <string>
, а не заголовок <string.h>
.
#include <string>
Ваш класс может выглядеть следующим образом
#include <iostream>
#include <string>
#include <utility>
using namespace std;
class Laptop
{
public:
string brand;
string model;
int ram;
int storage;
Laptop( const string &brand, const string &model, int ram, int storage)
: brand( brand ), model( model ), ram( ram ), storage( storage )
{
}
Laptop( const Laptop &x)
: brand( x.brand ), model( x.model ), ram( x.ram ), storage( x.storage )
{
}
Laptop( Laptop &&x)
: brand( std::move( x.brand ) ), model( std::move( x.model ) ), ram( x.ram ), storage( x.storage )
{
}
void displayData() const
{
cout << brand << " " << model << ": RAM = " << ram << "GB, Storage = " << storage << "GB" << endl;
}
};
//...