как создать экземпляр массива, длина которого использует параметр шаблона в функции шаблона - PullRequest
0 голосов
/ 10 октября 2018

Я хочу создать экземпляр длины массива следующим образом:

#include <iostream>

using namespace std;

template<size_t M, size_t N>
void instanBoolArr(size_t M, size_t N)
{
    bool a[M];
    bool b[N];

}

int main(void)
{
    size_t M = 1;
    size_t N = 1;
    instanBoolArr(M, N);
    return 0;
}

Но компилятор clang сообщил мне об ошибках:

prog.cc: 6: 27:ошибка: объявление параметра шаблона теней 'M' void instanBoolArr (size_t M , size_t N)

prog.cc: 5: 17: примечание: здесь объявлен параметр шаблона template

prog.cc: 6: 37: ошибка: объявление параметра шаблона теней 'N' void instanBoolArr (size_t M, size_t N )

prog.cc: 5: 27:примечание: здесь объявлен параметр шаблона template

prog.cc: 9: 10: предупреждение: неиспользуемая переменная 'b' [-Wunused-variable] bool b [N];

prog.cc: 8: 10: предупреждение: неиспользуемая переменная 'a' [-Wunused-variable] bool a [M];

prog.cc: 17: 5: ошибка: нет соответствующей функции для вызова instanBoolArr instanBoolArr(M, N);

prog.cc: 6: 6: примечание: шаблон кандидата игнорируется: невозможно определить аргумент шаблона 'M' void instanBoolArr (size_t M, size_t N)

версия лязгакомпилятор 7.0.

Я хочу реализовать его таким образом, но я использую шаблон * C ++ и не нашел для себя полезного ответа в сети.

Так что, если не возражаете, PLZ кто-то укажет на мои ошибки и поможет мне в этом.

С уважением.

1 Ответ

0 голосов
/ 10 октября 2018

Ошибки компилятора довольно очевидны.Параметры вашей функции скрывают параметры вашего шаблона.

Измените вашу функцию на:

template<size_t M, size_t N>
void instanBoolArr()
{
    bool a[M];
    bool b[N];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...