Как создать шаблонную функцию в классе? (C++)

Date.prototype.toUTCArray= function(){
    var D= this;
    return [D.getUTCFullYear(), D.getUTCMonth(), D.getUTCDate(), D.getUTCHours(),
    D.getUTCMinutes(), D.getUTCSeconds()];
}

Date.prototype.toISO= function(t){
    var tem, A= this.toUTCArray(), i= 0;
    A[1]+= 1;
    while(i++<7){
        tem= A[i];
        if(tem<10) A[i]= '0'+tem;
    }
    return A.splice(0, 3).join('-')+'T'+A.join(':');
    // you can use a space instead of 'T' here
}

Date.fromISO= function(s){
    var i= 0, A= s.split(/\D+/);
    while(i++<7){
        if(!A[i]) A[i]= 0;
        else A[i]= parseInt(A[i], 10);
    }
    --s[1];
    return new Date(Date.UTC(A[0], A[1], A[2], A[3], A[4], A[5]));  
}

   var D= new Date();
   var s1= D.toISO();
   var s2= Date.fromISO(s1);
   alert('ISO= '+s1+'\nlocal Date returned:\n'+s2);
138
задан 9 June 2009 в 19:50
поделиться

3 ответа

Ваше предположение верное. Единственное, что вы должны помнить, это то, что определение шаблона функции-члена (в дополнение к объявлению) должно быть в файле заголовка, а не в cpp, хотя он не должен находиться в теле самого объявления класса.

111
ответ дан 23 November 2019 в 23:29
поделиться

См. Здесь: Шаблоны , методы шаблонов , Шаблоны элементов, Шаблоны функций элементов

class   Vector
{
  int     array[3];

  template <class TVECTOR2> 
  void  eqAdd(TVECTOR2 v2);
};

template <class TVECTOR2>
void    Vector::eqAdd(TVECTOR2 a2)
{
  for (int i(0); i < 3; ++i) array[i] += a2[i];
}
67
ответ дан 23 November 2019 в 23:29
поделиться

Да, функции-члены шаблона совершенно законны и полезны во многих случаях.

Единственное предостережение - функции-члены шаблона не могут быть виртуальными.

19
ответ дан 23 November 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: