частичная специализация шаблонов классов, c ++ - PullRequest
2 голосов
/ 24 сентября 2011

Я пытаюсь это выяснить, поэтому у меня есть попытка специализировать шаблон класса:

template <class T, int size> class arr{
public:
    arr(T* in):_in(in){};
    void print()
    {
        for (int i = 0; i < size; i++)
        {
            cout << _in[i];
        }
        cout << endl;
    }
private:
    T* _in;
};

Я хочу создать специальный шаблон для arr<char>.До того как я добавил int size в качестве параметра типа, это было легко, и объявление класса было template<> class arr<double>.

Теперь у меня есть template <> class arr<double,size>, что приводит к этой ошибке:

template argument 2 is invalid

Есть идеи как это сделать?спасибо!

Ответы [ 2 ]

4 голосов
/ 24 сентября 2011
template <int size> class arr<char, size>

Кроме того, вы можете изменить тип размера на unsigned int или size_t (при условии, что размер не может быть отрицательным).

0 голосов
/ 24 сентября 2011

Вам необходимо добавить int size в первый список, то есть у компилятора нет источника для size - вы не объявили его как аргумент шаблона и он не является константой.

template<int size> class arr<double, size> { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...