Patron de classe dans c++
houcem001
Messages postés
15
Statut
Membre
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
salut
j'ai un patron de classe nommé CVector
//CVector.h:
template<Class T>
class CVector{
....
};
et j'ai une classe nommé Matrice dont j'ai:
//Matrice.h
class Matrice{
public:
...
void add(CVector<T>);
CVector<T> getcont(int);
...
private:
CVector<T> m_cont[100]; comme attribut
...
};
Mais au niveau du compilation il y a des erreurs:
C:\Documents and Settings\fourati\Bureau\houcem\COURS\TP CPOO\TP2\Matrice.h|13|error: `T' was not declared in this scope|
C:\Documents and Settings\fourati\Bureau\houcem\COURS\TP CPOO\TP2\Matrice.h|13|error: template argument 1 is invalid|
.......
Merci de m'aider
j'ai un patron de classe nommé CVector
//CVector.h:
template<Class T>
class CVector{
....
};
et j'ai une classe nommé Matrice dont j'ai:
//Matrice.h
class Matrice{
public:
...
void add(CVector<T>);
CVector<T> getcont(int);
...
private:
CVector<T> m_cont[100]; comme attribut
...
};
Mais au niveau du compilation il y a des erreurs:
C:\Documents and Settings\fourati\Bureau\houcem\COURS\TP CPOO\TP2\Matrice.h|13|error: `T' was not declared in this scope|
C:\Documents and Settings\fourati\Bureau\houcem\COURS\TP CPOO\TP2\Matrice.h|13|error: template argument 1 is invalid|
.......
Merci de m'aider
A voir également:
- Dans le code de la page, modifiez la couleur de fond de la classe .pix.
- Code ascii - Guide
- Impossible de supprimer une page word - Guide
- Code de déverrouillage oublié - Guide
- Fond de page word - Guide
- Changer la couleur de la barre des taches - Guide
1 réponse
Logique.
tu ne met pas de template devant matrice, donc tu peux le déclarer ainsi:
Matrice a;
Mais comment le compilateur sait comment remplacer les T qui sont contenus dans Matrice ?
deux solutions
1- tu met un template <typename T> devant la déclaration de Matrice, et ensuite tu déclare "Matrice<double> a;"
2- tu met le type de CVector souhaité dans la classe Matrice et tu conserve la déclaration.
tu ne met pas de template devant matrice, donc tu peux le déclarer ainsi:
Matrice a;
Mais comment le compilateur sait comment remplacer les T qui sont contenus dans Matrice ?
deux solutions
1- tu met un template <typename T> devant la déclaration de Matrice, et ensuite tu déclare "Matrice<double> a;"
2- tu met le type de CVector souhaité dans la classe Matrice et tu conserve la déclaration.