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

Паттерн декоратор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Последовательность структурированных переменных типа struct man http://www.cyberforum.ru/cpp-beginners/thread1051016.html
Последовательность структурированных переменных типа struct man { char name; int dd,mm,yy; char addr; }; Последняя компонента представляет собой строку переменной размерности, расположенную непосредственно за структурированной переменной. Конец последовательности - структурированная переменная с пустой строкой в поле name.
C++ сформировать и записать в выходной файл массив, элементы которого равны длинам слов Помогите пожалуйста с программой. Для произвольного текста входного файла, содержащего не более 10 строк, в каждой строке не более 80 символов, сформировать и записать в выходной файл массив, элементы которого равны длинам слов. Примечание : Размерность массива m * n определяется по следующему критерию: m – количество строк входного файла, n – максимальное количество слов в строке;... http://www.cyberforum.ru/cpp-beginners/thread1051002.html
Целые и рациональные числа(коневртер валют) C++
#include <iostream> using namespace std; int main() { setlocale(0,""); int c; cout << "Евро: "; cin >> c int b = 44.95 * c; cout << "Рубли: " << b << endl;
C++ Опишите рекурсивную функцию number без параметров для определения количества элементов файла
Никак не могу написать программу! Помогите пожалуйста :( Опишите рекурсивную функцию number без параметров для определения количества элементов файла f
C++ Строки - код без [string] http://www.cyberforum.ru/cpp-beginners/thread1050979.html
Есть код, в котором список фамилий вводится через запятую в ввиде строки, далее фамилии по алфавиту как убрать использования <string> и <vector> //StackOverflow //All rights reserved. #include <iostream> #include <string> #include <vector> #include <cctype>
C++ Определить, сколько раз число встречается в массиве подробнее

Показать сообщение отдельно
Pokemon_93
 Аватар для Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
21.12.2013, 23:37     Паттерн декоратор
доброго времени суток уважаемые форумчане, помогите пожалуйста разобраться, где я допустил ошибку?
суть программы в том что бы слова содержащиеся в векторе выводить с использованием обоих декораторов(1 - реверс строки 2 - обрамление слова в скобки '[' ']'), у меня почему то получается так что выводится только с использованием второго декоратора. хотя в дебаге он заходит в первый и кажется что делает все что нужно.
содержимое файлов проекта:
BrachetPrinterDecorator.h
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
#include "IMessagePrinter.h"
#include "iostream"
#include "memory"
#include "string"
class CBrachetPrinterDecorator : public IMessagePrinter
{
    IMessagePrinter* m_component;
public:
    CBrachetPrinterDecorator(IMessagePrinter* component) : m_component(component) {};
 
    void PrintStudents()
    {
        m_component->PrintStudents();
 
        std::string name;
        for (auto i = studentsName.begin(); i != studentsName.end(); i++)
        {
            name = *i;
            std::cout << '[' << name << ']'<< ", ";
        }
        std::cout << "\nbrachet decor\n";
 
    }
    ~CBrachetPrinterDecorator(){};
};
IMessagePrinter.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class IMessagePrinter
{
public:
    
    IMessagePrinter()
    {
        studentsName.emplace_back("valera");
        studentsName.emplace_back("vlad");
        studentsName.emplace_back("masha");
        studentsName.emplace_back("misha");
        studentsName.emplace_back("roma");
    };
    virtual void PrintStudents() = 0;
    ~IMessagePrinter(){};
    std::vector<std::string> studentsName;
MessagePrinter.h
C++
1
2
3
4
5
6
7
8
9
10
#include "IMessagePrinter.h"
#include "string"
#include "iostream"
class MessagePrinter : public IMessagePrinter
{
public:
    MessagePrinter(){};
    virtual void PrintStudents(){};
    ~MessagePrinter(){};
};
CReversePrinterDecorator.h
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
#include "IMessagePrinter.h"
#include "memory"
#include "iostream"
#include "string"
#include "vector"
class CReversePrinterDecorator: public IMessagePrinter
{
    IMessagePrinter* m_component;
public:
    CReversePrinterDecorator(IMessagePrinter* component) : m_component(component) {}
    
    void PrintStudents()
    {
        std::vector<std::string> temp;
 
        for (int i = 0; i != studentsName.size(); i++)
        {
            std::string name = studentsName[i];
            std::reverse(name.begin(), name.end());
            temp.push_back(name);
        }
         m_component->studentsName = temp;
 
        m_component->PrintStudents();
 
        std::cout << "\nreverse decor\n";
 
    }
 
    ~CReversePrinterDecorator(){};
};
и под конец main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include "BrachetPrinterDecorator.h"
#include "ReversePrinterDecorator.h"
#include "IMessagePrinter.h"
#include "MessagePrinter.h"
using namespace std;
int main(void)
{
    IMessagePrinter* rev = new CBrachetPrinterDecorator(new CReversePrinterDecorator(new MessagePrinter()));
    rev->PrintStudents();
    return 0;
}
заранее благодарен за помощь

Добавлено через 4 часа 58 минут
неужели никто не знаком с данным паттерном и не поможет мне?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru