Я работаю над библиотекой, где пользователи должны иметь возможность использовать статические глобальные экземпляры.Эти экземпляры (запускаемые перед main) регистрируются в другом глобальном векторе, который затем может быть использован ...
В настоящее время все выглядит примерно так ...
class A;
std::vector<A*> v;
class A {
public:
A (int i) : i(i) {
v.push_back(this);
}
int get () const {
return this->i;
}
private:
int i;
};
A a(1);
A b(2);
int main ()
{
for (A* const& c : v)
std::cout << c->get() << std::endl;
for (std::vector<A*>::iterator i = v.begin(); i != v.end(); i++)
delete *i;
return 0;
}
ОднакоБоюсь, что этот код утечет ... тем более, что когда я не хочу, чтобы пользователи явно удаляли содержимое вектора (они все равно его забудут), это должно произойти автоматически в конце main.
Есть ли другие решения?Я хотел использовать вектор std :: unique_ptr, но, видимо, они так не работают ...