Форум программистов, компьютерный форум CyberForum.ru

Передача существующего объекта вместо создания нового - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как вызвать конструктор с параметрами в конструкторе без параметров? http://www.cyberforum.ru/cpp-beginners/thread1236513.html
Как вызвать конструктор с параметрами в конструкторе без параметров? То есть что бы конструктор с параметрами выступал в роли основного. В одном классе, пример: class Test { private: int value; public: Test() { Test(5);
C++ Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) Столкнулся с проблемой, сам не ожидал. Вот три файла main.cpp #include <iostream.h> #include <conio.h> #include "menu.h" int main(){ clrscr(); http://www.cyberforum.ru/cpp-beginners/thread1236509.html
C++ Есть ли возможность в char-массив часть данных ввести в буквах, а часть в цифрах?
подскажите пожалуйста, есть ли возможность в char массив часть данных ввести в буквах, а часть в цифрах (или в любой другой массив вбить значения обоих типов)
C++ Какую книгу из приведенного списка стоит прочесть?
Привет всем помогите пожалуйста! я начинающий программист я немного знаю VB6 но я хочу изучить C++ из этих книги какой надо читать: 1.Visual C++.NET для чайников автор. Майкл Хаймен, Боб Арнсон 288 стр. ISBN 5-8459-0326-2 2.С++ для чайников(4-изд) автор. Девис, Стефан Р. 337стр. ISBN5-8459-0160-Х 3.C/C++ в задачах и примерах автор. Культин Н.Б 288 стр. ISBN5-94157-029-5 4.СиШарп:Создание...
SFML Sfml, как вставить картинку? http://www.cyberforum.ru/cpp-beginners/thread1236397.html
2д игра, как заместь закрешеных блоков поместить туда тайл, ну то есть картинку в rectangle.setFillColor(Color::Black); void Map::loadmap(String TileMap,float offsetX, float offsetY) { RectangleShape rectangle( Vector2f(64, 64)); for (int i=0; i<H; i++) for (int j=0; j<W ; j++)
C++ Сократить количество символов кода #include <fstream> using namespace std; int main(){ifstream f("input.txt"); ofstream c("output.txt"); int a,m,q,r=0; f>>a; for(int i=0;i<a;i++) {f>>m; }f>>q; while(q) подробнее

Показать сообщение отдельно
ValeryS
Модератор
6406 / 4872 / 447
Регистрация: 14.02.2011
Сообщений: 16,170
31.07.2014, 06:11     Передача существующего объекта вместо создания нового
Цитата Сообщение от 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; // удаляем
}
 
Текущее время: 07:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru