Похоже, вы не указатель с подсчетом ссылок.Сначала давайте рассмотрим, почему ваше решение не работает:
- Здесь:
A* a1 = new A();
вы делаете присвоение указателя, не назначение класса.Вы не можете перегрузить эту операцию. - В вашем определении
Class A
вы используете подсчет ссылок.Это не хорошее решение, что если вам нужен новый класс (Class B
), который также требует подсчета ссылок?Вы должны реализовать это снова и снова.Это не красиво или многократно.
Итак, что мы можем сделать?Ну, это зависит от того, почему вы не хотите подсчитывать ссылки.Кажется, ты не хочешь управлять памятью.Fortunatley, C ++ предоставляет конструкцию для этого уже.Это std::shared_ptr
.Вы можете использовать это так:
{
std::shared_ptr<A> a1 = std::make_shared<A>(); // Reference count is set at 1
{
std::shared_ptr<A> a2 = a1; // Reference count is incremented to 2
} // Reference count is decremented to 1
} // Reference count is decremented to 0 and the memory is released.