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

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

Войти
Регистрация
Восстановить пароль
 
gore-lykovoe
32 / 32 / 1
Регистрация: 04.04.2010
Сообщений: 414
#1

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

30.04.2014, 13:08. Просмотров 310. Ответов 11
Метки нет (Все метки)

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++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; template &lt;typename SomeClass&gt; class Array { private : ...

Матрицы. Указать индексы элемента с найденным значением. Отсортировать матрицу по убыванию - C++
Дана действительная матрица размера n*m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением. Затем...

Функция содержащая статическую переменную - C++
Начал разбираться с статическими ф-циями, и прикидывал простые примеры. Но дошел до того, что никак не могу понять как там получается: ...

Создать статическую библиотеку к программе - C++
У меня есть программа и к ней надо создать статическую библиотеку. Не совсем понимаю, как это воплотить.

Научите собирать статическую библиотеку из исходников - C++
Собственно, не могу я этого... В &quot;наборе&quot; есть файлы .h, .m, .in, .c, а также CMakeLists.txt Как из всего этого добра получить lib'у? ...

почему линковщик не видит статическую переменную: - C++
почему линковщик не видит статическую переменную: файл aaa.h class aaa { protected: static CStringArray...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5122 / 4442 / 1481
Регистрация: 14.04.2014
Сообщений: 17,637
30.04.2014, 16:11     Указать параметром шаблона статическую матрицу #2
Попробуй так
C++
1
2
typedef int Matrix[2][3];
List<Matrix> list;
gore-lykovoe
32 / 32 / 1
Регистрация: 04.04.2010
Сообщений: 414
30.04.2014, 16:27  [ТС]     Указать параметром шаблона статическую матрицу #3
Цитата Сообщение от nmcf Посмотреть сообщение
typedef int Matrix[2][3];
List<Matrix> list;
Много ошибок. Конкретно с QList работаю, но тут не суть в нем.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.04.2014, 16:51     Указать параметром шаблона статическую матрицу #4
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
Как правильно указать параметр шаблона тогда?
List<int*>
nmcf
5122 / 4442 / 1481
Регистрация: 14.04.2014
Сообщений: 17,637
30.04.2014, 20:55     Указать параметром шаблона статическую матрицу #5
Ну мы же не видим, что ты дальше с этим делаешь.
gore-lykovoe
32 / 32 / 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
6918 / 4111 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
30.04.2014, 22:24     Указать параметром шаблона статическую матрицу #7
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
ошибка при добавлении элемента в список
Код покажи где ты с этим списком работаешь.
gore-lykovoe
32 / 32 / 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
6918 / 4111 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
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
32 / 32 / 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
6918 / 4111 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
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++
мучаюсь вторые стуки, не где не могу найти решения проблемы, смысл в следующим, сделал каласс образно говоря контейнер, в нем прописал...

Собственная реализация strtok, стоит ли применить статическую переменную? - C++
Добрый день! Пришла мысль реализовать свою strtok. Хотел проконсультироваться. Следует ли в этой strtok применять статическую...

Не получается сделать статическую линковку своей программы в MinGW - C++
Написал на с++ программу, скомпилировал и решил дать другу потестить. Хотел слинковать статически при помощи ключа '-static', но...

std::bind и указатель на статическую функцию член класса - C++
Биндинг простых функций класса-это понятно, а вот как быть, если функция статическая?


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

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

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