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

Параметры шаблона - C++

Восстановить пароль Регистрация
 
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
30.11.2013, 22:07     Параметры шаблона #1
Доброго всем вечера. Вопрос по теории, который не выходит нагуглить.
К примеру, нужно хранить статический массив интов с точно известным количеством параметров, и его нужно передать как параметр шаблонного класса.
У меня, к примеру,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const int s = ...;
 
int Matrix[s][s] = {...};
 
template<int size, int **array>
class MatrixClass
{
public:
    static inline int** func()
    {...};
}
...
int main()
{
     int array[s][s] = MatrixClass<s,Matrix>::func();
     ...
}
Разумеется, это не работает. Подскажите, как правильно двумерный массив задать и передать в параметры шаблонного класса можно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 22:07     Параметры шаблона
Посмотрите здесь:

C++ параметры шаблона
Инстанцирование шаблона C++
C++ Инстанцирование шаблона
C++ Специализация шаблона
C++ Определение метода-шаблона за пределами шаблона класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.11.2013, 22:14     Параметры шаблона #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
class Foo
{
public:
    template<class T, int M, int N>
    static void bar(const T (&arr)[M][N])
    {
        for (int i = 0; i < M; ++i)
        {
            for (int j = 0; j < N; ++j)
            {
                std::cout << arr[i][j] << ' ';
            }
            
            std::cout << '\n';
        }
    }
};
 
int main() 
{
    int arr[][2]
    {
        {0, 0},
        {0, 1},
        {1, 0},
        {1, 1}
    };
    
    Foo::bar(arr);
}
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
30.11.2013, 22:37  [ТС]     Параметры шаблона #3
Jupiter, а если мне нужна невоидовская функция? И я собираюсь возвращать матрицу? Тут много проблем тоже у меня
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.11.2013, 22:43     Параметры шаблона #4
Nikoys, возвращай через ссылку
C++
1
2
3
4
5
6
7
8
9
10
11
12
static void bar(T (&arr)[M][N])
    {
        for (int i = 0; i < M; ++i)
        {
            for (int j = 0; j < N; ++j)
            {
                arr[i][j] = 100500;
            }
            
            std::cout << '\n';
        }
    }
Yandex
Объявления
30.11.2013, 22:43     Параметры шаблона
Ответ Создать тему
Опции темы

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