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

Указать параметром шаблона статическую матрицу - C++

Восстановить пароль Регистрация
 
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
30.04.2014, 13:08     Указать параметром шаблона статическую матрицу #1
C++
1
2
3
int matrix[2][3];
List<int**> list;
list << matrix;
no match <int**> and <int(*)[2][3]>

Как правильно указать параметр шаблона тогда?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2014, 13:08     Указать параметром шаблона статическую матрицу
Посмотрите здесь:

C++ Как поместить в шаблон статическую переменную?
C++ почему линковщик не видит статическую переменную:
C++ std::bind и указатель на статическую функцию член класса
C++ Матрицы. Указать индексы элемента с найденным значением. Отсортировать матрицу по убыванию
Научите собирать статическую библиотеку из исходников C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4301 / 3722 / 1255
Регистрация: 14.04.2014
Сообщений: 14,556
30.04.2014, 16:11     Указать параметром шаблона статическую матрицу #2
Попробуй так
C++
1
2
typedef int Matrix[2][3];
List<Matrix> list;
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
30.04.2014, 16:27  [ТС]     Указать параметром шаблона статическую матрицу #3
Цитата Сообщение от nmcf Посмотреть сообщение
typedef int Matrix[2][3];
List<Matrix> list;
Много ошибок. Конкретно с QList работаю, но тут не суть в нем.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.04.2014, 16:51     Указать параметром шаблона статическую матрицу #4
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
Как правильно указать параметр шаблона тогда?
List<int*>
nmcf
4301 / 3722 / 1255
Регистрация: 14.04.2014
Сообщений: 14,556
30.04.2014, 20:55     Указать параметром шаблона статическую матрицу #5
Ну мы же не видим, что ты дальше с этим делаешь.
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
30.04.2014, 22:17  [ТС]     Указать параметром шаблона статическую матрицу #6
Цитата Сообщение от Jupiter Посмотреть сообщение
List<int*>
no match <int*> and <int[2][3]>
а если list << &matrix;
no match <int*> and <int(*)[2][3]>

Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
Ну мы же не видим, что ты дальше с этим делаешь.
ошибка при добавлении элемента в список
DrOffset
6443 / 3817 / 885
Регистрация: 30.01.2014
Сообщений: 6,611
30.04.2014, 22:24     Указать параметром шаблона статическую матрицу #7
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
ошибка при добавлении элемента в список
Код покажи где ты с этим списком работаешь.
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
30.04.2014, 22:27  [ТС]     Указать параметром шаблона статическую матрицу #8
Цитата Сообщение от nmcf Посмотреть сообщение
1
2
typedef int Matrix[2][3];
List<Matrix> list;
request for member '~int[2][3]' in '*(int(*)[2][3])to', which is of non-class tpe 'int[2][3]'

Добавлено через 1 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
Код покажи где ты с этим списком работаешь.
C++ (Qt)
1
2
3
4
typedef int Matrix[2][3];
QList<Matrix> list;
Matrix matrix;
list << matrix;
Всё.
DrOffset
6443 / 3817 / 885
Регистрация: 30.01.2014
Сообщений: 6,611
30.04.2014, 22:38     Указать параметром шаблона статическую матрицу #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
gore-lykovoe, я так и думал. "Статические" массивы в С++ и С не копируются по значению. Они не объекты первого класса. Соответственно нельзя создать контейнер таких недообъектов. Потому что контейнеры обычно требуют свойств copy-constructable и copy-assignable, коих у массивов нет. Массивы можно копировать только поэлементно. Ты ведь знаешь, что массивы "теряют" свой размер при передаче в функцию, потому что по-умолчанию приводятся к указателю?
Чтобы все-таки это заработало, нужно сделать массив полноценным объектом. Для этого предназначен класс std::array. Вот пример, без QList но с тем же смыслом.
C++
1
2
3
4
5
6
7
8
9
10
#include <array>
#include <list>
 
int main()
{
    typedef std::array<std::array<int, 3>, 2> Matrix;
    std::list<Matrix> list;
    Matrix matrix;
    list.push_back(matrix);
}
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
30.04.2014, 23:19  [ТС]     Указать параметром шаблона статическую матрицу #10
Цитата Сообщение от DrOffset Посмотреть сообщение
#include <array>
#include <list>
int main()
{
* * typedef std::array<std::array<int, 3>, 2> Matrix;
* * std::list<Matrix> list;
* * Matrix matrix;
* * list.push_back(matrix);
}
no match operand types are 'QList<std::tr1::array<std::tr1::array<int, 3u>, 2u>>' and 'Matrix[2][3]
DrOffset
6443 / 3817 / 885
Регистрация: 30.01.2014
Сообщений: 6,611
30.04.2014, 23:42     Указать параметром шаблона статическую матрицу #11
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
no match operand types are 'QList<std::tr1::array<std::tr1::array<int, 3u>, 2u>>' and 'Matrix[2][3]
Matrix[2][3] - это что, где?

Добавлено через 17 минут
gore-lykovoe, в общем показывай как пробуешь. По ошибке видно, что там еще что-то подмешано. Сразу говорю, код который я дал - рабочий.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 23:44     Указать параметром шаблона статическую матрицу
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
30.04.2014, 23:44  [ТС]     Указать параметром шаблона статическую матрицу #12
Цитата Сообщение от DrOffset Посмотреть сообщение
в общем показывай как пробуешь. По ошибке видно, что там еще что-то подмешано. Сразу говорю, код который я дал - рабочий.
Забыл удалить [2][3] у объекта. Спасибо большое. Все работает))
Yandex
Объявления
30.04.2014, 23:44     Указать параметром шаблона статическую матрицу
Ответ Создать тему
Опции темы

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