Bonjour,
Je suis bloqué dans la réalisation d'un TP.
Voici le contexte, j'ai 2 classes : Core et MapReduce.
Je chercher à avoir vecteur de pointeurs de Core statique qui contiendra 4 instances de Core dans MapReduce.
Voici le main :
Core.hpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <iostream> #include "Core.cpp" #include "MapReduce.cpp" int main(int argc, char **argv) { std::vector<int> b = std::vector<int>({12, 3, 100, 60, -7, -8, -9, -10}); MapReduce<int> mri(&b); // 0- Affichage du nombre de coeurs initiaux std::cout << std::endl << "####### test 0 #######" << std::endl; std::cout << std::endl << "Nombre de coeurs initiaux: " << Core<int>::getCount() << std::endl; //1- Décommentez pour tester si on peut instancier un nouveau coeur (ne doit pas fonctionnerer) //Core<int> core1; //2 - Test d'affichage des coeurs disponibles (id s'incrémente et degradation 0) std::cout << std::endl << "####### test 2 #######" << std::endl << std::endl; MapReduce<int>::afficherCores(); return 0; }
Core.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #ifndef CORE #define CORE #include <vector> #include <iostream> template<typename T> class Core { private: static int counter; static int identifiant; const int id; int degradation; std::vector<T> *values; Core(): id(++identifiant) { degradation = 0; ++counter; } public: static int getCount(){ return counter; } int getID(){ return id; } int getDE(){ return degradation; } }; #endif
MapReduce.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "Core.hpp" template<typename T> int Core<T>::identifiant = 0; template<typename T> int Core<T>::counter = 0;
J'obtiens les deux erreurs ci-dessus, du coup impossible d'instancier mes core et d'obtenir le resultat de getcount() et afficherCores().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #ifndef MAPREDUCE #define MAPREDUCE #include <vector> #include <iostream> #include "Core.hpp" template<typename T> class MapReduce { private: const static std::vector<Core<T> *> cores{ cores.push_back(Core<T>{}), cores.push_back(Core<T>{}), cores.push_back(Core<T>{}), cores.push_back(Core<T>{}) }; std::vector<Core<T>> *values; Core<T> * core; public: explicit MapReduce(std::vector<int> *pVector){ for (const std::vector<Core<T> *> &item : cores) { // erreur : In template: reference to type 'const std::vector<Core<int> *>' could not bind to an lvalue of type 'Core<int> *const' } } static void afficherCores(){ for(int i = 0; i < cores.size(); i++){ std::cout << "id : " << cores.at(i)->getID() << std::endl; // erreur : In template: no matching member function for call to 'push_back' } } }; #endif
J’espère que vous pourrez m'aider, merci par avance.
Partager