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

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

Войти
Регистрация
Восстановить пароль
 
DrHlus
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 11
#1

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

05.12.2012, 12:10. Просмотров 634. Ответов 3
Метки нет (Все метки)

Всем привет!
Уже пару дней бьюсь не могу написать такую вещь.
Мне нужен клас. Его конструктор по умолчанию запривачен (объект этого класа без проделаной определенной работы бессмыслен), а вот написать обычный не знаю как.
Он должен принимать один параметр типа 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++
Как создать клас Fraction C++
Нужен совет - как сделать circular linked list? C++
C++ клас Letter, клас Person
C++ Нужен совет
C++ как использовать клас в классе?
C++ Знаю С, написать ничего толкового не могу, нужен совет опытных
C++ Нужен совет: как лучше всего сгенерировать документ .doc с оформлением по ГОСТу
C++ Нужен совет. Как правильно исправит код ?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1634 / 1262 / 128
Регистрация: 21.12.2010
Сообщений: 1,924
Записей в блоге: 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
2455 / 1627 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
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:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru