У меня есть класс шаблона, и по крайней мере 95% его кодов одинаковы для всех типов параметра шаблона, если только переменная-член и функция не должны быть добавлены для одной специализации.
Пример, который я хочу получить:
template <typename T>
class AClass {
private:
T payLoad;
public:
AClass( const T& crp_payload ) : payLoad( crp_payload ) {};
void showMe() {
cout << "Common showMe:" << payLoad << endl;
};
/*
* A lot of functions same for all specializations go here.
* I absolutely don't want to implement respectively them for
* every specializations!
*/
// specializing for int ----------------------------
// dedicated function
template <int>
void showPayload() {
cout << "AClass<int>::showPayload:" << payLoad << endl;
};
// dedicated variable, but following code can not be compiled!
template <int>
int otherPayload;
};
int main() {
AClass<int> iac( 123 );
iac.showMe();
iac.showPayload();//can not pass the compiling!
AClass<float> fac(456);
fac.showMe();
return 0;
};
Мои вопросы:
- Как добавить просто переменную "otherPayload" без перекодирования всего
AClass<int>
- Как позвонить
showPayload()
sinc Когда я получаю сообщение об ошибке,
сделайте это в main()
, как указано выше.
- Разве нет пути, только специализируясь на "пересмотре / дополнении" некоторых
члены класса без полной его реализации?