![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Непонятный вызов класса в C++ |
|
C/C++ - [решено] Непонятный вызов класса в C++
|
Пользователь Сообщения: 62 |
Когда изучал классы в C++ на уроках было показано два примера
как можно пользоватся классами в коде Например на основе трёх файлов: main.cpp #include <iostream> #include <string> using namespace std; #include "SharedConfig.h" #include "SharedConfig.cpp" int main() { // Первый способ с последующим вызовом через "." CSharedConfig class1; cout << "Service "; cout << class1.GetAppVersion() <<endl; cout << endl; // Второй способ с последующим вызовом через "->" CSharedConfig *class2 = new CSharedConfig; cout << "Service "; cout << class2->GetAppVersion() <<endl; cout << endl; delete class2; system("pause"); return 0; } SharedConfig.cpp Всё работает исправно А сейчас разбираю один код и мне попался непонятный метод вызова функции через класс #include <iostream> #include <string> using namespace std; #include "SharedConfig.h" #include "SharedConfig.cpp" int main() { // Третий способ ??? cout << "Service "; cout << CSharedConfig::Shared()->GetAppVersion() <<endl; cout << endl; system("pause"); return 0; } Что для этого нужно прописать в файле - SharedConfig.h то есть как нужно оформить написание класса И что нужно прописать в файле - SharedConfig.cpp то есть что нужно вписать помимо функции (функция та что и выше) Попробую прикрепить функции разбираемого кода |
|
Отправлено: 19:30, 29-03-2014 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать На одном форуме подсказали одно решение для этой надстройки
CSharedConfig::Shared()->GetAppVersion() Правда оно не совсем то что в разбираемых мною файлах Но главное что работает #include <iostream> #include <string> using namespace std; class CSharedConfig { public: static CSharedConfig* Shared() { return new CSharedConfig; } string GetAppVersion(); }; string CSharedConfig::GetAppVersion() { return "0.1.5"; } int main() { cout << "Service "; cout << CSharedConfig::Shared()->GetAppVersion() <<endl; cout << endl; system("pause"); return 0; } CSharedConfig::GetAppVersion() |
Отправлено: 22:58, 29-03-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 123
|
Профиль | Отправить PM | Цитировать Попробую ответить на вопрос "Как понять этот способ?".
Класс CSharedConfig реализует один из шалонов проектирования ООП - он называется Одиночка. Метод CSharedConfig::Shared() предоставляет доступ к экземпляру класса и гарантирует, что экземпляр будет только один. CSharedConfig* CSharedConfig::Shared() { if (m_Instance == 0) m_Instance = new CSharedConfig(); return m_Instance; } Память будет "утекать" с каждым вызовом метода CSharedConfig::Shared(). Имейте в виду. |
Отправлено: 00:38, 30-03-2014 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Java - Вызов метода EJB | veter48 | Программирование и базы данных | 0 | 16-09-2013 15:41 | |
PowerShell - Вызов скриптов. | impulse107 | Скриптовые языки администрирования Windows | 1 | 23-05-2013 18:31 | |
CMD/BAT - Многократный вызов программы | Smasher | Скриптовые языки администрирования Windows | 2 | 25-09-2012 23:51 | |
javascript странный вызов | bruder | Вебмастеру | 4 | 25-02-2008 13:43 | |
Вызов процедуры | ToX | Программирование и базы данных | 10 | 24-07-2004 00:11 |
|