Problèmes de classe Template composée de fonctions statiques
Mourad2009B
Messages postés
145
Statut
Membre
-
Mourad2009B Messages postés 145 Statut Membre -
Mourad2009B Messages postés 145 Statut Membre -
Bonjour à tous,
Voila comme indiquer dans le titre, j’ai un problème avec une classe Template dans la quelle j’ai déclaré des fonctions statiques.
Voici le code de ma classe TEMPLATE
et voici le main.cpp
Et voici l’erreur déclenchée
Si quelqu’un à une idée svp.
Merci d’avance.
Voila comme indiquer dans le titre, j’ai un problème avec une classe Template dans la quelle j’ai déclaré des fonctions statiques.
Voici le code de ma classe TEMPLATE
#ifndef SORTCLASS_H
#define SORTCLASS_H
#include<iostream>
template<typename T>
class SortClass
{
public:
SortClass(){};
//Fonction pour afficher un tableau
static void print(T *tab, int n)
{
std::cout << tab[0];
for(int i(1); i< n; i++)
{
std::cout << ", " << tab[i];
}
}
//Tri par PERMUTATION
static void sortPermutation(T tab[], int n)
{
int compteur(0);
for(int i(0); i<n; i++)
{
for(int j(i); j<n; j++)
{
compteur++;
if(tab[i] < tab[j])
swap(tab[i], tab[j]);
}
}
}
};
#endif // SORTCLASS_H
et voici le main.cpp
#include <iostream>
#include <Windows.h>
#include <chrono>
#include "rndclass.h"
#include "sortclass.h"
int main()
{
unsigned int temp = GetConsoleOutputCP();
SetConsoleOutputCP(CP_UTF8);
cout << "Hello World!" << endl;
int n = 1000000;
int *tab = new int[n];
string *tabLettres = new string[n];
for(int i(0); i<n; i++)
{
tabLettres[i] = RndClass::rndString();
}
//print(tabLettres, n);
cout << "***********************************************************************" << endl;
auto start = std::chrono::system_clock::now();
SortClass::sortPermutation(tabLettres, n);
auto end = std::chrono::system_clock::now();
auto elapsed = end - start;
std::chrono::duration<double> diff = end - start;
cout << "le temps est de : " << elapsed.count() << endl;
cout << "le temps diff est de : " << diff.count() << endl;
SortClass::print(tabLettres, n);
SetConsoleOutputCP(temp);
return 0;
}
Et voici l’erreur déclenchée
D:\Fichiers_applications\C++\Projets_QtCreator\Algorithmie\AlgoTri\AlgoTri\main.cpp:144: erreur : 'SortClass' is not a class, namespace, or enumeration
D:\Fichiers_applications\C++\Projets_QtCreator\Algorithmie\AlgoTri\AlgoTri\main.cpp:152: erreur : 'template<class T> class SortClass' used without template parameters
../AlgoTri/main.cpp:152:5: error: 'template<class T> class SortClass' used without template parameters
SortClass::print(tabLettres, n);
Si quelqu’un à une idée svp.
Merci d’avance.
2 réponses
-
Bonjour,
SortClass
n'est pas une classe, c'est une classe-template. Et elle ne peut pas (du moins dans ce cas) deviner son paramètre. Il faut écrireSortClass<string>::sortPermutation(tabLettres, n);
etSortClass<string>::print(tabLettres, n);
. -
Merci beaucoup Daflab, pour ta réponse et surtout pour ta rapidité, ça m'a bloqué un certain temps, et là je peux avancer.
Merci encore et bonne soirée.