Уничтожить производный класс из двух пониженных ссылок [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
Уничтожить производный класс из двух пониженных ссылок [закрыто]

Сообщение Anonymous »

Код: Выделить всё

struct Data {
// some fields
};

struct E : public virtual Data {
// some fields
};

struct A : public E {};
struct B : public E {};

struct EE : A, B {
E& a() {
return *static_cast(this);
}
E& b() {
return *static_cast(this);
}
};

Код: Выделить всё

int main() {
std::vector vec;

for (size_t i = 0; i < 10; ++i) {
auto ee = new EE(...);
vec.push_back(ee->a());
vec.push_back(ee->b());
}

// shuffle the `vec`

// your code may go here as well

for (size_t i = 0; i < 20; ++i) {
// your code goes here
}

// At this point All `EE` must be correctly `deleted`
}
Я создаю значения EE и для каждого сохраняю 1 ссылку из a() и 1 ссылку из b() в векторе . После этого я перетасовываю контейнер и перебираю его. После итерации все EE должны быть уничтожены. Как это можно сделать? Есть ли решение, не предполагающее редактирования структуры Data, E и EE?


Подробнее здесь: https://stackoverflow.com/questions/798 ... references

Вернуться в «C++»