Problèmes de classe Template composée de fonctions statiques

Fermé
Mourad2009B Messages postés 102 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 21 mai 2024 - 4 janv. 2022 à 19:57
Mourad2009B Messages postés 102 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 21 mai 2024 - 4 janv. 2022 à 21:23
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

#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

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
4 janv. 2022 à 20:27
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 écrire
SortClass<string>::sortPermutation(tabLettres, n);
et
SortClass<string>::print(tabLettres, n);
.
0
Mourad2009B Messages postés 102 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 21 mai 2024
4 janv. 2022 à 21:23
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.
0