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

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

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

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

19.01.2010, 21:18. Просмотров 1011. Ответов 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++
У меня такое задание по лабу, кстати она самая сложная и последняя: дана структура: struct Student { char *LastName; ...

Просто не могу вывести значения из вектора - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;stdexcept&gt; using std::cout; using std::cin; using std::endl; ...

Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора - C++
Здравствуйте. Буду очень благодарен,если кто нибудь напишет два кода к этим задачам. Спасибо за внимание. Задача 1. Составить...

Конструктор по умолчанию вызывается после конструктора инициализации - C++
Во время выполнения программы потомок не может использовать матрицу, инициализированную в предке. Я создала конструктор с параметрами, в...

Шаблоны и параметр по умолчанию - C++
Добрый день. Вроде всё делаю по учебнику, но компилятор не пропускает: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;cstdlib&gt; ...

Значения по умолчанию для массива - C++
Можно ли задать значение по умолчанию для массива? Так не работает: Enrollee(string f = &quot;Unknown&quot;, string l = &quot;Unknown&quot;, unsigned b = {...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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<тут не должно быть переменных!!!>
спасибо!
но как в таком случае инициализировать вектор с дробями?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2010, 23:08     шаблоны: не могу обеспечить реализацию значения по умолчанию для инициализации элементов вектора
Еще ссылки по теме:

Ошибка при инициализации вектора списком - C++
В книге Страуструпа элементы вектора объявляются так vector&lt;int&gt; v = { 5 , 7 , 9 , 4 , 6 , 8 } ;В netbeans (linux ubuntu) ide выдаёт...

Шаблоны классов. Ошибка параметра по умолчанию - C++
Есть template &lt;class data_type&gt; class List; и typedef unsigned char point_dist; template &lt;class data_type = point_dist&gt; class...

Определить значения двух наименьших элементов вектора - C++
С клавиатуры ввести вектор целых чисел. Определить значения двух наименьших элементов вектора. Если они не одинаковые, то заменить эти...

Вычислить значения элементов вектора по заданной формуле - C++
Найти вектор y={y1,y2…,y6} по формуле: yi={5xi3-3xi2+1 если i&lt;3, 3xi2-25 , если i&gt;=3 // і - индекс, число после і -...

Определить значения трех средних элементов вектора - C++
Дан вектор V с нечетным количеством элементов N (≥ 3). Определить значения трех средних элементов вектора после того, как вектор будет...

Значение вектора по-умолчанию - C++
Здравствуйте! В общем проблема уже в заголовке. Нужно,чтобы в функции с 3 параметрами-векторами (string,int,int) эти самые параметры имели...


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

Или воспользуйтесь поиском по форуму:
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
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