membres statiques et spécialisations partielles de classes

Le
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;

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();
}
Vos réponses Page 2 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien LE LEZ
Le #310524
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


espie
Le #311101
In article Fabien LE LEZ
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.

Fabien LE LEZ
Le #311099
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...

Publicité
Poster une réponse
Anonyme