Partage
  • Partager sur Facebook
  • Partager sur Twitter

class was not declared in this scope

Sujet résolu
13 septembre 2009 à 17:24:36

Bonjour.

J'ai un petit probleme.
J'ai deux headers, l'un pour ma classe "Carte" et l'autre pour des autres fonctions.
Dans le deuxieme je mets le prototype d'une fonction vers laquelle j'envoie un objet de type "Carte".

Probleme: Ca ne fonctionne pas, le debugger me dit : Carte was not declared in this scope.

Que dois-je faire?
Voici mon programme :

#include <iostream>
#include "Carte.h"
#include "extra.h"

using namespace std;

int main()
{
    Carte b;
    abc(b);
    return 0;
}

#include <iostream>
#include "Carte.h"
#include "extra.h"

Carte::Carte()
{
}


#ifndef CARTE_H_INCLUDED
#define CARTE_H_INCLUDED

#include "extra.h"

class Carte
{
    public:
        Carte();

};

#endif // CARTE_H_INCLUDED


#include <iostream>
#include "Carte.h"
#include "extra.h"

void abc(Carte b)
{
}


#ifndef EXTRA_H_INCLUDED
#define EXTRA_H_INCLUDED

#include "Carte.h"

void abc(Carte b);

#endif // EXTRA_H_INCLUDED


Que dois-je faire?

Merci pour votre aide! ;)
  • Partager sur Facebook
  • Partager sur Twitter
13 septembre 2009 à 17:54:55

À quelle ligne se trouve-t-elle, l'erreur?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
13 septembre 2009 à 18:30:39

C'est très courant comme erreur...

Elle vient simplement du fait que tu inclues extra.h dans Carte.h et Carte.h dans extra.h

Pour solutionner celà, il suffit de déclarer la classe Carte dans le header (et non l'inclure) et l'inclure dans le fichier cpp.

Par exemple :

extra.h
class Carte;

void abc(carte b);


extra.cpp
#include "Carte.h"
#include "extra.h"

void abc(Carte b)
{
/* la fonction */
}
  • Partager sur Facebook
  • Partager sur Twitter
12 juin 2016 à 13:04:24

Bonjour a tous

j'ai eu un probleme récemment en essayant de pratiquer le tp de la formation C++ avec le mot mystere

je vous expose mon problème voilà:

J'ai programmez plusieurs fonction et a la fin de celle-ci je met :return (valeur a envoyé);

mais seulement voila le compiler me dit que je n'ai pas déclarer cette variable alors que je l'est renvoyé avec return et du coup déclarer celle-cio_O

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <fstream>
#include <string>


using namespace std;


// 1ere partie chercher mot dico
string piocheDico (string mot)
{
    ifstream dico("C:/Users/Proprietaire/Desktop/Programmation/dico.txt");
    if (dico)
    {
        getline(dico, mot);
        cout << "le mot est " <<mot<<endl;
    }
    else
    {
        cout<<"erreur d ouverture du fichier dico"<<endl;
    }
    return mot;
}





// 2eme partie melanger le mot
string melangeMot (string mot)
{
    int position (0);
    string melange;
    while (mot.size ()!=0)
    {
        position=rand() % mot.size();
        melange+=mot[position];
        mot.erase(position,1);
    }
 return melange;
}



// 3eme partie demander a l'utilisateur le mot
int main ()
{
    string motUtil;
    string motMelange;
    motMelange= melange (mot);
    cout << "Quel est ce mot ?"<<motMelange<<endl;
    cin >> motUtil;

    return 0;
}


Je ne comprend pas mon erreur ,j'espère que vous pourrez m'aider :)

PS: Je sui débutant

  • Partager sur Facebook
  • Partager sur Twitter
3 juillet 2016 à 20:58:29

Bonjour j'ai un problème dans mon programme arduino car je débute mais je ne comprend pas le message d'erreur 

voici le code :

char D0_ALerte = 8;

char DI_Detecteur = 7;

void setup() {

  pinMode(DI_Detecteur, INPUT_PULLUP);

}

void loop() {

       boolean basculement = digitalRead(DI_Detecteur);

       if (basculement == true)

       {

       tone(D0_Alerte, 500, 30);

       delay(100);

       }

       delay(1);

       }

mon message d'erreur est :  error: 'D0_Alerte' was not declared in this scope
        tone(D0_Alerte, 500, 30);
             ^
exit status 1
'D0_Alerte' was not declared in this scope
merci 
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2016 à 17:25:21

Aux 2 dernières personnes qui ont posté sur ce sujet:

Créez un nouveau sujet décrivant votre problème, ce sera plus constructif que de venir vous greffer sur un sujet déja existant, et ce pour plusieurs raisons:
1) Ca pollue l'ancien sujet, surtout que votre soucis n'a rien à voir avec le post de départ.
2) Vous venez de faire ce qu'on appelle du déterrage (ou necro-posting) d'un (très) vieux sujet, ce qui a de grandes chances de vous faire passer pour des trolls (et donc reduire severement vos chances d'obtenir des réponses constructives).
3) Assurez-vous de bien lire les regles du forum.

  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2016 à 21:07:46

On dirait bien que Deedolith résume plutôt bien la situation.

Cela va m'éviter d'avoir à faire un long message d'explication.

Il ne me reste plus qu'à fermer.

Bonne soirée.

  • Partager sur Facebook
  • Partager sur Twitter