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

Нужен совет, как правильно написать клас - C++

Восстановить пароль Регистрация
 
DrHlus
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 11
05.12.2012, 12:10     Нужен совет, как правильно написать клас #1
Всем привет!
Уже пару дней бьюсь не могу написать такую вещь.
Мне нужен клас. Его конструктор по умолчанию запривачен (объект этого класа без проделаной определенной работы бессмыслен), а вот написать обычный не знаю как.
Он должен принимать один параметр типа enum, несколько параметров float и еще один int, но будет, как правило, использоваться его значение по умолчанию.
Проблема в том, что количество параметров float зависит от значения параметра типа enum, поэтому там самый универсальный вариант - указать итераторы на контейнер, но вот как это сделать по-человечески, я без понятия.
Вот приблизительный код этого всего хлама
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
enum HillFunctionType
{
    exponential,
    universal
};
 
class HillFunctionData: public vector<float>
{
    private:
    HillFunctionData(){;}
 
    public:
    
    vector<float> params;
        HillFunctionData(HillFunctionType funcType, ForwardIterator itBegin, ForwardIterator itEnd, const unsigned int points = PointsInHillFunction); // вот этот конструктор
};
Что подскажете?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2012, 12:10     Нужен совет, как правильно написать клас
Посмотрите здесь:

Нужен совет! C++
C++ Нужен совет
C++ Нужен совет
Нужен совет а то не знаю как начать C++
Нужен совет - как сделать circular linked list? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
05.12.2012, 12:49     Нужен совет, как правильно написать клас #2
в с++11 есть std::initializer_list

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <initializer_list>
 
enum EType {one, two};
 
class Base
{
public:
    Base(EType const eval, std::initializer_list<float> const ilist, unsigned const un = 4)
    {
        for(auto const& val : ilist)
        {
            std::cout << val << std::endl;
        }
    }
};
int main()
{
    Base b(EType::one, {3.22, 6, 7}), b1(EType::two, {3.34}, 77);
    return 0;
}
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.12.2012, 13:12     Нужен совет, как правильно написать клас #3
Если точно известно какие параметры нужны, можно написать несколько перегруженных конструкторов с разными сигнатурами. А вообще, как мне кажется, стоит ответить на вопрос: это один объект может быть сконструирован разными способами (и тогда вариант с перегрузкой допустим) или же в от параметров при конструировании будет зависеть дальнейшее его поведение (тогда логично было бы организовать иерархию классов).
DrHlus
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 11
05.12.2012, 14:48  [ТС]     Нужен совет, как правильно написать клас #4
Большое спасибо, буду использовать initializer_list.
Еще только подскажите, как у вас тут принято "закрівать" темы?

 Комментарий модератора 
Цитата Сообщение от DrHlus Посмотреть сообщение
Еще только подскажите, как у вас тут принято "закрівать" темы?
Никак. Тема закрывается только в том случае, если она нарушает правила. В противном случае она останется открытой, вопрос может быть поднят снова (даже не обязательно вами) через некоторое время.
Yandex
Объявления
05.12.2012, 14:48     Нужен совет, как правильно написать клас
Ответ Создать тему
Опции темы

Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru