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

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

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

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

19.01.2010, 21:18. Просмотров 1001. Ответов 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++ Шаблоны и параметр по умолчанию
C++ Значения по умолчанию для массива
Ошибка при инициализации вектора списком C++
C++ Шаблоны классов. Ошибка параметра по умолчанию
Определить значения двух наименьших элементов вектора C++
C++ Вычислить значения элементов вектора по заданной формуле
C++ Определить значения трех средних элементов вектора
C++ Значение вектора по-умолчанию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,352
19.01.2010, 23:08     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора #4
C++
1
template<class T, const T N>
Yandex
Объявления
19.01.2010, 23:08     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора
Ответ Создать тему
Опции темы

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