Функция шаблона C ++ не работает в Visual Studio - PullRequest
0 голосов
/ 26 апреля 2018

Я практикую шаблонный пример. Вот код:

//template_practice.h
#pragma once

template<typename T, unsigned N> 
void print_arry(ostream &out,const T (&arry)[N]) 
{
    for (T* i = cbegin(arry); i != cend(arry); i++) 
    {
        out << *i << " ";
    }
    out << endl;
}

//main.cpp
#include "stdafx.h"
using namespace std;

int main()
{
    int test[10] = { 1,2,3,4,5,6,7,8,9,10 };
    print_arry<int, 10> (cout, test);

    getchar();
    return 0;
}

//stdafx.h
//... (library headers)
#include "template_practice.h"

Существует много ошибок, в том числе: «остановка заголовка не находится в области действия файла. Файл PCH IntelliSense не был создан», «ostream»: необъявленный идентификатор »,« выражение, предшествующее круглым скобкам видимого вызова, должно иметь тип функции ».. .

1 Ответ

0 голосов
/ 26 апреля 2018

Сначала добавьте #include <iostream> (для std::ostream и std::endl) и #include <iterator> (для std::cbegin и std::cend) в template_practice.h. И добавьте std:: при их использовании. (Кстати using namespace std; не очень хорошая идея ).

Во-вторых, cbegin(arry); возвращает const T*, поэтому измените тип i на const T* или используйте вместо него auto; например for (auto i = cbegin(arry); i != cend(arry); i++).

ЖИТЬ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...