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

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

Войти
Регистрация
Восстановить пароль
 
togramago
9 / 9 / 0
Регистрация: 03.11.2009
Сообщений: 39
#1

шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора - C++

19.01.2010, 21:18. Просмотров 983. Ответов 3
Метки нет (Все метки)

Здравствуйте!
Помогите пожалуйста разобраться с таким вот:

у меня есть класс Vector который темплэйт

C++
1
2
3
4
5
6
7
8
9
10
11
12
template<class T, T N> class Vector
{
    int size; //current size of vector (number of elements)
    int max; //max number of elements
    T * value; //array of elements
public:
    Vector();
    virtual ~Vector();
    Vector(int max);
    Vector(int max, int size);
    Vector(const Vector<T, N> & v);
...};
c функциями которые работают для встроенных типов например
C++
1
Vector <int, 10> v(10, 3)
выдает 10 10 10 - тоесть все нормально
но если написать
C++
1
Vector<Fraction, Fraction(3,5)> v(10, 3)
(Fraction - класс дробей)
начинает выдавать ошибки:

C++
1
a call to a constructor cannot appear in a constant-expression
- если с этим все понятно и просто заменяется на переменную объявленную раньше, то что делать с этими?:
C++
1
initializer expression list treated as compound expression
C++
1
invalid type in declaration before ‘(’ token
C++
1
template argument 2 is invalid
при замене на переменную получается вот что:
C++
1
2
const Fraction f(3,5);
Vector<Fraction, f> vf(12, 3);
и ошибки:

C++
1
‘f’ cannot appear in a constant-expression
- почему? никак не могу понять - наверное в этом и ошибка?
C++
1
initializer expression list treated as compound expression
C++
1
invalid type in declaration before ‘(’ token
C++
1
template argument 2 is invalid

как его побороть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 21:18     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора
Посмотрите здесь:

Определить конструктор для инициализации полей по умолчанию C++
C++ Шаблоны классов. Ошибка параметра по умолчанию
C++ Значение вектора по-умолчанию
C++ Шаблоны и параметр по умолчанию
C++ Провести программную реализацию расчета приблизительного значения функции y, разложив функцию в ряд Тейлора
Определить значения двух наименьших элементов вектора C++
C++ Значения по умолчанию для массива
Конструктор по умолчанию вызывается после конструктора инициализации C++
как лучше всего добавлять предопределенные изменяемые значения char в интерфейс и реализацию класса? C++
Просто не могу вывести значения из вектора C++
Ошибка при инициализации вектора списком C++
C++ Динамический массив объектов(изменить реализацию ввода элементов, через "cin". Для передачи в public)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
19.01.2010, 21:41     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора #2
togramago,
Vector<тут не должно быть переменных!!!>
togramago
9 / 9 / 0
Регистрация: 03.11.2009
Сообщений: 39
19.01.2010, 22:27  [ТС]     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора #3
Цитата Сообщение от Adler Посмотреть сообщение
togramago,
Vector<тут не должно быть переменных!!!>
спасибо!
но как в таком случае инициализировать вектор с дробями?
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,340
19.01.2010, 23:08     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора #4
C++
1
template<class T, const T N>
Yandex
Объявления
19.01.2010, 23:08     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора
Ответ Создать тему
Опции темы

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