
Сообщение от
alsav22
Чтобы это сделать уже должен быть создан новый объект,
не-е-ет
именно проверяем, если нет создаем
я этим давно не занимался, да и мысль только сейчас пришла не сформировалась полностью, по этому распишу коряво полу Си полу псевдо код
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| class A
{
private:
static List lst; // список уже существующих объектов
int qual; // количество объектов
A(arg); // конструктор обязательно защищенный чтобы создать можно было только через new
public:
A* new(/*здесь не знаю какие аргументы*/);
~A();
}
.........
A* A::new()
{
A* aa=/*здесь сравниваем с уже созданными если есть вернем указатель, если нет то NULL */
if(aa)// объект существует?
{
aa->qual++; // Да. добавим количество объектов
return aa; // и вернем на него указатель
}
// объект не существует, создаем
aa=/*здесь выделяем память и вызываем конструктор */
A::lst.add(aa);// добавим объект в список
aa->qual=1;// количество один
return aa; // вернем указатель на только что созданный объект
}
A::~A()
{
qual--; // уменьшаем количество
if(qual==0) // если равно 0, т.е больше таких объектов, ссылок на него не существует
delete this; // удаляем
} |
|