problème switch en c++

mimst71

Nouveau membre
J'ai tapé un morceau de prg et je ne comprend pas les erreurs. Sachan que LINE, RECTANGLE et CERCLE sont aussi définis dans une classe ressources.h et concernant le case je ne vois pas comment l'utiliser autrement.


CElement * CTP2suiteView::CreateElement()
{
CTP2suiteDoc* pDoc= GetDocument();
ASSERT_VALID(pDoc);
switch(pDoc->GetElementType())
{
case LINE: return new CLine(m_FirstPoint,m_SecondPoint,pDoc->GetElementWidth(),pDoc->GetElementColor());
case RECTANGLE: return new CRectangle(m_FirstPoint,m_SecondPoint,pDoc->GetElementWidth(),pDoc->GetElementColor());
case CERCLE: return new CCercle(m_FirstPoint,m_SecondPoint,pDoc->GetElementWidth(),pDoc->GetElementColor());
default: ;
}
}


Voici les erreurs qu'il me sort en compilant:

error C2065: 'LINE' : undeclared identifier
F:\TP2\TP2suiteView.cpp(139) : error C2051: case expression not constant
F:\TP2\TP2suiteView.cpp(140) : error C2065: 'RECTANGLE' : undeclared identifier
F:\TP2\TP2suiteView.cpp(140) : error C2051: case expression not constant
F:\TP2\TP2suiteView.cpp(141) : error C2065: 'CERCLE' : undeclared identifier
F:\TP2\TP2suiteView.cpp(141) : error C2051: case expression not constant
F:\TP2\TP2suiteView.cpp(143) : warning C4065: switch statement contains 'default' but no 'case' labels
Generating Code...
Error executing cl.exe.
 

KangOl

Grand Maître

[fixed]error C2065: 'LINE' : undeclared identifier [/fixed]
pourtant on dirait pas...
 

zerlin

Nouveau membre
Sachant que LINE, RECTANGLE et CERCLE sont aussi définis dans une classe ressources.h
J'aimerais bien voir ton fichier ressources.h, mais bon... Comme tu dis, tu as mis ton enum dans ta classe ce qui le rend inaccessible de l'extérieur de celle-ci. Tu dois donc mettre ton enum à l'extérieur de la classe.

[cpp]enum TTypeForme //De cette façon, ton enum est accessible à tous et pas seulement par l'intermédiaire de ta classe.
{
LINE,
RECTANGLE
CERCLE,
};

class TForme
{
private:

public:
enum TTypeForme //Mauvaise façon, il faut passer par la classe pour utiliser l'enum.
{
LINE,
RECTANGLE
CERCLE,
};

};

CElement * CTP2suiteView::CreateElement()
{
CTP2suiteDoc* pDoc= GetDocument();
ASSERT_VALID(pDoc);

switch(pDoc->GetElementType())
{
case LINE: return ....

case RECTANGLE: return ....

case CERCLE: return ....

default: ; //Dans ce cas-ci, inutile.
}
}[/cpp]
 

ken-Shiro

Nouveau membre
Bonjour
Je debute en c++ et je voudrais apres un cout<< que l'ordinateur ne n'accepte pas certaine saisie et qu'il me fasse un petit bruit bip
 

KangOl

Grand Maître
1/ quel est le rapport avec le topik ?
2/ c'est quoi rapport avec cout et les saisie ?
3/ google tu connais ??
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 120
Membres
1 586 398
Dernier membre
mookie767
Partager cette page
Haut