Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2014, 19:37   #1
assch
Пользователь
 
Регистрация: 13.09.2010
Сообщений: 65
По умолчанию Непонятный вызов класса в C++

Когда изучал классы в 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.h

Код:
#pragma once

class CSharedConfig
{
public:
string GetAppVersion();
};
SharedConfig.cpp

Код:
#include "SharedConfig.h"

string CSharedConfig::GetAppVersion()
{
return "0.1.5";
}
Всё работает исправно
А сейчас разбираю один код и мне попался непонятный метод вызова
функции через класс

Код:
#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
то есть что нужно вписать помимо функции (функция та что и выше)

Попробую прикрепить функции разбираемого кода
Вложения
Тип файла: rar 3.rar (5.9 Кб, 6 просмотров)
assch вне форума Ответить с цитированием
Старый 29.03.2014, 19:52   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
cout << CSharedConfig::Shared()->GetAppVersion() <<endl;
Фунция, в пространстве фукнкций. Тяжело, понимаю.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 29.03.2014, 22:59   #3
assch
Пользователь
 
Регистрация: 13.09.2010
Сообщений: 65
По умолчанию

На одном форуме подсказали одно решение для этой надстройки

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()

Код:
#include <iostream>
#include <string>
using namespace std;

class CSharedConfig
{
public:
static string GetAppVersion();
};
 
string CSharedConfig::GetAppVersion()
{
return "0.1.5";
}
 
int main()
{
cout << "Service ";
cout << CSharedConfig::GetAppVersion() <<endl;
cout << endl;
system("pause");
}
assch вне форума Ответить с цитированием
Старый 29.03.2014, 23:14   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Ну, работать будет, а в чём вопрос?
Я бы, написал немного по-другому, но это моё ИМХО. Не буду разводить холивар и антимонию. Подумаете, сами код сократите . Это возможно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 29.03.2014 в 23:17.
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов класса ыыф Общие вопросы C/C++ 1 14.06.2013 11:27
Вызов методов шаблонного класса. the_deer_one C# (си шарп) 2 13.08.2012 17:22
Вызов Smarty из класса biohazardo PHP 3 28.11.2011 17:08
Вызов функции класса по адресу VintProg Общие вопросы Delphi 9 03.11.2009 05:17
Автоматический вызов функции класса Flaton Общие вопросы C/C++ 4 19.10.2007 17:56