int a;
B(int a):
a(a) {}
};
class A
{
int a;
B b;
public:
A(int a, B b) :
a(a), b(b) {}
void print()
{
std::cout << b.a;
}
};
int main()
{
A* a = new ((A*)malloc(sizeof(A))) A(3, B(4));
a->print();
a->~A();
delete a;
}
Вопрос зачем, а главное нахуя
Что это за хрень с малоком?
умышленное нанесение увечий
принт должен быть методом класса B
Нет, проблема не в этом
Это что, placement new у тебя так? А зачем?
Да Стоит задача сделать вектор, который можно заполнять неинициализированными объектами, которые потом можно по необходимости инициализировать Чтобы понять принцип сижу, стреляю по ногам
указатели изобретаешь?
У тебя тут B не имеет конструктора копирования, который будет нужен при конструировании A с участием В , при передаче по значению
Изобретаешь вектор или все-таки optional?
Тут ничего смысла в placement, поскольку ты все равно память каждый раз выделяешь
Я это понимаю, но в универе просят через placement.
Также, тут нельзя вызвать delete, надо явно вызвать деструктор и освободить память через free
Обсуждают сегодня