bonjour, je suis désolé car je sais que je sollicite beaucoup le forum de open classroom ces temps ci mais il y a une erreur que je ne comprend pas. L'ereure est apparue quand j'ai ajouté TestVoyelles dans la création du map playerkill.
erreur C3849: un appel de style fonction sur une expression de type 'const TestVoyelles' perdrait les qualificateurs const et/ou volatile pour l'ensemble des 2 surcharges d'opérateur disponibles
Voici mon code
main.cpp
#include"operateur.hpp"
#include<vector>
#include<iostream>
#include<string>
#include<functional>//permet de faire des chose basique(comme l'addition) avec les foncteurs sans devoire créé de méthode
#include<map>
using namespace std;
int main()
{
vector<int> tab(100, 0); //Un tableau de 100 cases valant toutes 0
string a;
cin>>a;
string::iterator b = a.begin();
TestVoyelles foncteur;
Remplir f(0);
for (vector<int>::iterator it = tab.begin(); it != tab.end(); ++it)
{
*it = f(); //On appelle simplement le foncteur sur chacun des éléments du tableau
cout << *it << endl;
}
if (foncteur(a))
cout << "contient une voyelle" << endl;
else
cout << "ne contient pas de voyelle" << endl;
plus<int> ffunctional; //On déclare le foncteur additionnant deux entiers
int nb1(2), nb2(3);
cout << nb1 << " + " << nb2 << " = " << ffunctional(nb1, nb2) << endl; //On utilise le foncteur comme s'il s'agissait d'une fonction
map<string, int,TestVoyelles> playerkill;//on a créé un operateur pour qu"il ne class plus dans l'ordre alphabetic mais du plus long prenom
//au plus petit
playerkill["squezie"] = 3;
playerkill["altrastorique"] = 12;
playerkill["codebullet"] = 7;
for (map<string, int>::iterator mapiter = playerkill.begin(); mapiter != playerkill.end(); ++mapiter)
cout << mapiter->first << ": " << mapiter->second << " kill" << endl;
return 0;
}
operateur.hpp
#ifndef DEF_OPERATEUR
#define DEF_OPERATEUR
#include<string>
class Remplir {
public:
Remplir(int i)
:m_valeur(i)
{}
int operator()()
{
++m_valeur;
return m_valeur;
}
private:
int m_valeur;
};
class TestVoyelles
{
public:
bool operator()(std::string const& chaine) const
{
for (int i(0); i < chaine.size(); ++i)
{
switch (chaine[i]) //On teste les lettres une à une
{
case 'a': //Si c'est une voyelle
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
return true; //On renvoie 'true'
default:
break; //Sinon, on continue
}
}
return false; //Si on arrive là, c'est qu'il n'y avait pas de voyelle du tout
}
bool operator()( std::string const& a, std::string const& b)
{
return a.length() < b.length();//on aurai aussi pus utilisé size mais size donne la taille dans la mémoire des éléments
} //alors que length donne le nombre de lettre/symbole/ect...
};
#endif
Tu as l'impression qu'ils disent la même chose parce que tu es débutant et que tu n'as pas le recul pour voir les (énormes) différences entre les deux cours.
Tu devrais croire les gens expérimentés de ce forum, ils ne décrient pas unanimement le cours d'OC sans bonnes raisons. J'ai terminé le cours d'open classroom quand j'ai débuté et quand il était encore plus complet qu'aujourd'hui. Je l'ai vraiment regretté, je me suis rendu compte trop tard des bétises qu'il apprenait, des mauvais réflexes qu'il donnait et je peux t'assurer que c'est compliqué d'abandonner les mauvaises habitudes qu'on a appris en premier pour ensuite se remettre à jour.
Tu fais ce que tu veux, mais tu ne te rendras pas service si tu continues le cours de ce site et quand tu t'en rendras compte le mal sera déjà fait
Bon ok tu m'as convaicue, maintenant j'attaque le cours de zeste de savoir. Parcontre en regardant leur cours j'ai eu l'impréssion qu'ils apprennent moin de chose sur la STL, est se voulu parcequ'il y beaucoup de chose plus utilisé de nos jours?
Le cours de zeste de savoir ne peut pas te donner 1% de la STL, il permet de connaître un minimum. C'est grand la STL. Je fais du C++ depuis plus de 30 ans et je peux me vanter de bien en connaître un quart, le reste est plus flou pour moi. Pour plus d'info, il faut impérativement utiliser la doc.
Quant au tutorial d'Openclassrooms non seulement il en indique nettement moins, mais il exclût les plus vitales à connaître et il y a des erreurs sur celles indiquées
Merci. Et j'ai commencé le cours de zest de savoir et effectivement il donne des meilleurs réflexe genre écrire int nombre{3}; à la place de
int nombre = 3; Du coup Merci beaucoup
erreur C3849
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.
git is great because Linus did it, mercurial is better because he didn't.
git is great because Linus did it, mercurial is better because he didn't.
En recherche d'emploi.