Два аргумента шаблона и специализации

Я пытаюсь сделать шаблон класса с двумя аргументами. Тогда я хочу, чтобы функции были специализированными.

template<class T, int number>
class TestClass{
public:
    TestClass(T x){
        a = x;
        z=number;
    };

    T print();

private:
    T a;
    int z;
};

template<class T, int number>
T TestClass<T, number>::print(){
    return a + number;
};

//This is the funktion I dont know how to handle
template<>
char TestClass<char, number>::print(){
    return a;
};
include <iostream>
include "TestClass.h"

using namespace std;

int main(){

    TestClass<int, 10> obj1(10);
    TestClass<double, 20> obj2(20.20);
    TestClass<char, 30> obj3('A');

    cout << obj1.print() << endl;
    cout << obj2.print() << endl;
    cout << obj3.print() << endl;
}

Я знаю, что эта тестовая программа не делает ничего полезного. char - это только один пример. Должно быть в состоянии быть чем угодно.

Это возможно? Нужен ли другой шаблон класса?

Большое спасибо заранее за ответы

0 ответов

Другие вопросы по тегам