PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nerviger Fehler mit enum


AtTheDriveIn
2006-11-23, 21:22:28
Hi

Erstmal der Code:


class Element
{
...
public:
enum c{black, red} color;
...
};

class Tree
{
...
void case_one(Element *t);
...
};

void Tree::case_one(Element *t)
{
t->parent()->color=red; //ändere Farbe des Vorgängers
}


parent() ist eine Methode die einen Zeiger auf den Vorgänger des Objektes liefert.

Beim Compilieren wird mir folgender Fehler angezeigt:
error C2065: 'red': nichtdeklarierter Bezeichner

Ich kann diese Fehlermeldung nicht nachvollziehen. Irgendwas scheint mit dem enum Datentyp nicht zu klappen. Nur was?

Expandable
2006-11-23, 21:32:14
Muss das nicht Element::red heißen?

Neomi
2006-11-23, 23:52:14
Muss das nicht Element::red heißen?

Jep, so ist es. Der Enum ist im Namespace der Klasse "Element" definiert, deshalb muß der mit angegeben werden.

AtTheDriveIn
2006-11-24, 02:38:05
Wie was?

Andere Variablen/Methoden die ich in Element vereinbare sind doch auch in Tree verfügbar...

Neomi
2006-11-24, 11:32:18
Sie sind nicht im Tree verfügbar, sondern im Element, vom Tree aus kannst du dann über ein Element darauf zugreifen ("...->color" statt einfach nur "color"). Auf die Werte des Enums, die in der Klasse Element definiert sind, mußt du ebenfalls passend zugreifen. Da "red" ein konstanter Wert ist und nicht an eine Instanz gebunden, passiert das über den Namespace der Klasse (Element::red).