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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Unreg
Сообщений: n/a
#1

Паттерн адаптер, помогите реализовать - C++

16.12.2007, 14:20. Просмотров 2364. Ответов 0
Метки нет (Все метки)

Доброго времени суток всем.
Я пишу программу и использованием одной библиотеки (трёхмерный движок irrlicht). У неё очень громоздкие конструкции, так что я хочу сделать её обёртку.
Я создаю абстрактный класс TEngineWrapper (кажется, это называется
интерфейс) и наследую от него класс TIrrlichtWrapper, который реализует... короче, конкретный класс, но
не показываю в остальные модули даже его описания, а выдаю только
описание функции createIrrlichtWrapper, которая всё делает внутри.

class TEngineWrapper
{
public:
virtual someEngineAdaptedFunc() = 0;
};

TEngineWrapper *createIrrlichtWrapper();

// ======= //

#include <irrlicht.h>
class TIrrlichWrapper : public TEngineWrapper
{
public :
virtual someEngineAdaptedFunc() { ... }
};

TEngineWrapper *createIrrlichtWrapper() { return new TIrrlichtWrapper; }

теперь вопросы.
во-первых, как лучше раскидать по файлам этот код? куда что? например делать
engwrp.h, engwrp.cpp, irrwrp.h, irrwrp.cpp ( и xors3dwrp.h, xors3dwrp.cpp,
если возникнет необходимость ) или только engwrp.h и engwrp.cpp? в смысле,
как "правильнее"? как полагается делать?

кроме того, если мне понадобится в интерфейсе обёртки использовать какой нибудь тип,
например для внешнего вида существа TAppearence, который для каждого движка булет свой,
то как мне быть с этим?
Я попробовал сделать интерфейс шаблонным

template< class TAppearence >
class TEngineWrapper
{
public:
virtual TAppearence obtainAppearence() = 0;
};

/*1*/TEngineWrapper *createEngigneWrapper();

// ===== //
#include <irrlicht.h>
class TIrrlichtWrapper : public TEngineWrapper< ISceneNode* >
{
public:
virtual ??? otainAppearence();
};

/*2*/ TEngineWrapper *createIrrlichtWrapper() { return new TIrrlichtWrapper; }


2) что писать на месте ??? ? то есть это получается как формальные и фактические
параметры функции, только ту типы. как с этим быть?
3) и вообще так он мне сделать не даёт.
В /*1*/ он говорит
error C2955: 'TEngineWrapper' : use of class template requires template argument list
В/*2*/ он говорит,
error C2440: 'return' : cannot convert from 'TIrrlichtWrapper *' to 'TEngineWrapper *'
error C2955: 'TEngineWrapper' : use of class template requires template argument list
и он прав.

Как быть с такими типами-параметрами?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2007, 14:20     Паттерн адаптер, помогите реализовать
Посмотрите здесь:

Как реализовать паттерн - C++
Как реализовать паттерн с помощью интерфейсов C++

Помогите реализовать стек - C++
Здравствуйте. Помогите, пожалуйста, решить задачу: Реализуйте структуру данных &quot;стек&quot;, реализовав все указанные здесь методы при помощи...

Помогите реализовать динамический массив - C++
помогите с задачей по с++ 1. Реализуйте динамический массив, используя пометку элементов.

Помогите реализовать принцип fifo - C++
Помогите реализовать принцип &quot;первый зашел первый вышел&quot; и 3 состояния процесса рождение: выполнение и ожидание.

Помогите реализовать шифр цезаря - C++
Помогите написать графическую программу, которая шифрует слова шифром Цезаря.Шифр Цезаря — один из древнейших шифров. При шифровании...

Помогите реализовать стек на основе массива - C++
помогите с задачачей по с++ 3. Реализуйте стек на основе массива.

Помогите реализовать программу, возможно за денежное вознаграждение - C++
Дано нечто конечного автомата изображенного на картинке. Суть работы программы заключается вот в чем: Воодим любую последовательность чисел...

Помогите с задачей или подскажите как ее можно реализовать!!! - C++
Вводишь строку (типа char). а программа выводит все слова строки у который определенный символ находится на определенной позиции. Символ и...

Класс Прямая(Помогите реализовать построение прямой через 1 точку и параллельную ей прямую) - C++
Помогите дописать класс // Методы класса &quot;Прямая&quot; // ------------------------------------------------------------- //...

Паттерн декоратор - C++
доброго времени суток уважаемые форумчане, помогите пожалуйста разобраться, где я допустил ошибку? суть программы в том что бы слова...

Паттерн стратегия - C++
Всем привет! Начал изучать паттерны. Одним из наиболее понятных и интересных мне оказался паттерн Стратегия. Я начитался статей и...

Паттерн Singleton - C++
Мне вот дали такой код как паттерн Singleton: #include &quot;stdafx.h&quot; template &lt;class T&gt; class SingletonS { static int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru