Форум программистов, компьютерный форум, киберфорум
Наши страницы

Библиотеки раскрывают инкапсуляцию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить класс "строка" http://www.cyberforum.ru/cpp-beginners/thread1792356.html
Определите класс "строка" с двумя член-данными: char *p и int len, где char*p- указатель на строку, а int len - длина строки. Напишите демонстрационную версию программы, которая создает 2 объекта...
C++ Создать функцию prompt и перегрузить её для параметра разного типа Создайте функцию prompt( ) для выдачи подсказки пользователю и ожидания ввода данного. Перегрузите функцию prompt( ) так, чтобы она осуществляла ввод данных типов int, double, long. • promt ()... http://www.cyberforum.ru/cpp-beginners/thread1792355.html
C++ Создать класс "кольцевой буфер"
Кольцевой буфер емкостью 1024 вещественных чисел. Доступ к элементам буфера – как к элементам очереди. Обязательны функции-члены класса для инициализации буфера, добавления и удаления элемента,...
Error C2679: бинарный "<<": не найден оператор C++
Кто-нибудь может объяснить, почему компилятор выдает ошибку? (строку с ошибкой смотрите в комментариях) error C2679: бинарный "<<" : не найден оператор, принимающий правый операнд типа std::string...
C++ Создать однонаправленный линейный список и использовать его для решения задачи о заявках на авиабилеты http://www.cyberforum.ru/cpp-beginners/thread1792348.html
Создать шаблон класса «однонаправленный линейный список». Использовать его при решении следующей задачи: Составить программу, которая содержит динамическую информацию о заявках на авиабилеты. Каждая...
C++ Создание класса секундомера Создайте класс секундомера. Члены класса: переменные типа double для хранения начального и конечного значения времени. Обязательны функции- члены класса для инициализации секундомера (присваивает... подробнее

Показать сообщение отдельно
Operok
165 / 163 / 45
Регистрация: 15.02.2015
Сообщений: 477
Завершенные тесты: 2
11.08.2016, 10:18
С помощью include guard некоторых заголовочных файлов можно от конечного пользователя скрывать некоторые методы класса в зависимости от используемых им библиотек/header'ов или вообще платформы:
C++
1
2
3
4
5
6
7
8
class MyWindow //некий кросплатформенный класс окошка
{
...
#ifdef _WINDEF_
    HWND GetNativeHandle() const;
#endif
...
}
Добавлено через 16 минут
Цитата Сообщение от Fasterbru Посмотреть сообщение
1)у меня есть интерфейс "человек"
2)я реализовал этот интерфейс
3)создал порождающий класс, который выдает объект (реализующий интерфейс "человек" из пк.2)
!!итог:я получаю от порождающего класса объект, реализующий интерфейс "человек" и не вижу его либы.
это задачу решает, но громоздко.
вопрос: как получить тот же результат, но компактнее?
Пораждающий класс - фабрика?
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
36
37
38
39
40
41
42
43
44
/*IHuman.cpp*/
class IHuman
{
public:
    virtual ~IHuman() = default;
    virtual void SomeMethod() = 0;
    //остальные виртуальные методы
protected:
    IHuman() = default;
};
 
/*Human.h*/
#include "IHuman.h"
 
class Human : public IHuman
{
public:
    Human(...);
    virtual ~Human();
    virtual void SomeMethod() override;
    //остальная реализация
};
 
/*Human.cpp*/
/*тут реализация class Human*/
 
/*HumanFactory.h*/
#include "IHuman.h"
#include <memory>
 
class HumanFactory
{
public:
    static std::unique_ptr<IHuman> MakeHuman(...);
...
};
 
/*HumanFactory.cpp*/
#include "HumanFactory.h"
#include "Human.h"
std::unique_ptr<IHuman> HumanFactory::MakeHuman(...)
{
   ...
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.