crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Задачка по С++, Придумал тут намедни задачку, как вам?
ViGOur
  опции профиля:
сообщение 19.6.2017, 11:07
Сообщение #1


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Есть классы:
Исходный код классов
#include <sstream>
#include <iostream>
#include <string>
#include <vector>

class CClassMessage
{
protected:
    std::vector<std::string> m_properties;

public:
    enum eProperties
    {
        PRPT_END
    };
};

class CMsg0: public CClassMessage
{
public:
    enum eProperties
    {
        PRPT_Prefix = 0,
        PRPT_Name,
        PRPT_END
    };
};

class CMsg1: public CClassMessage
{
public:
    enum eProperties
    {
        PRPT_Prefix = 0,
        PRPT_State,
        PRPT_Protocol,
        PRPT_END
    };
};
Сделайте так, что функция работала правильно:
bool parseLine( std::vector<std::string> line)
    {
        if( line.size() >= m_properties.size() )
        {
            for( int n = 0; n < PRPT_END; ++n )
            {
                m_properties[n] = line[n];
            }
            return true;
        }
        return false;
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 20.6.2017, 8:35
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


ViGOur, начнём с того, что означает "правильно" - а что должна делать функция ? ) Может, она уже правильно работает ?

Допустим, под "правильно" имеется в виду определение значения PRPT_END в СТАТИЧЕСКОЙ функции
bool parseLine(CClassMessage* context, std::vector<std::string> line)

для переданного контекста (объекта класса CClassMessage или его потомка)


Раскрывающийся текст
тут вариантов несколько
1) "enum eProperties" всех классов заменить на мембер std::map<int> CClassMessage::m_props; и заполнить в конструкторе потомков
2) виртуальная функция CClassMessage::GetPropsCount
3) можно удариться в шаблоны, но тут лишнее
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 12:28