OVH Cloud OVH Cloud

membres statiques et spécialisations partielles de classes

13 réponses
Avatar
AG
Bonjour,

voici mon bout de code (toujours le même en amélioré). Ma question est la
suivante :

combien de tableau tab ai-je ? Moi j'en veux que deux. Un pour myA1 et un
pour myA2. Le fait que je sois obligé de spécialiser l'instanciation du
tableau statique tab me fait penser que j'aurais 12 tableau en tout. Est-ce
bien ça ?

D'avance merci.

Alexandre.


#define D 5

const int L=10;

template <class T,bool S,int N=0> class A
{
static T tab[D*L];
A<T,S,N+1> next;
public:
void f(void)
{
for(int i=0;i<L;i++) tab[N*L+i+1]+=tab[N*L+i];
next.f();
};
};

template<class T,bool S> class A<T,S,D>
{
static T tab[D*L];
public:
void f(void)
{
for(int i=0;i<S;i++) tab[D*L+i+1]+=tab[D*L+i];
};
};


template<class T, bool S,int N>
T A<T,S,N>::tab[D*L]={0};

template<class T, bool S>
T A<T,S,D>::tab[D*L]={0};

int main(void)
{
A<int,true> myA1;
A<int,false> myA2
myA1.f();
myA2.f();
}

3 réponses

1 2
Avatar
Fabien LE LEZ
On Mon, 13 Aug 2007 09:59:23 +0200, "AG" :

En fait, tu as deux classes avec un "int N=0>" alors qu'il n'en
faudrait qu'une.
j'en ai deux dans le sens ou pour l'une S vaut true, et pour l'autre, S vaut

false.


Non, non, ce n'est pas ce que j'ai voulu dire.

A et B ont le paramètre template "int N=0". Une seule de ces deux
classes devrait l'avoir.

template<class T, bool S, int N=0> class A
template<class T,bool S, int N=0> class B


Avatar
espie
In article ,
Fabien LE LEZ wrote:
En C moderne et en C++, il vaut mieux ne pas le mettre effectivement.
Bien sûr, le type de retour est indispensable (contrairement au même
vieux C, d'ailleurs) :


Pas entierement vrai. En C moderne, il faut le laisser dans les declarations
de fonctions. Sinon, celles-ci ne sont pas prises comme des prototypes
completement types.

Avatar
Fabien LE LEZ
On Thu, 16 Aug 2007 08:56:32 +0000 (UTC), (Marc
Espie):

Pas entierement vrai. En C moderne, il faut le laisser dans les declarations
de fonctions. Sinon, celles-ci ne sont pas prises comme des prototypes
completement types.


Bien vu. Ça m'appendra à parler de langages que je ne connais pas...

1 2