ein Kapitel zurück                                           ein Kapitel weiter

Da sicherlich viele nachdem sie C gelernt haben auf C++ Umsteigen werden, ein paar Differenzen die es hinsichtlich von Strukturen mit struct, unions und enum zu beachten sind.

Folgende Differenzen gibt es bei Verwendung von struct und union...

struct twin{
   int x;
   int y;
   };

struct twin moretwin;  /*Ok in C und C++*/
twin newtwin;          /*falsch in C, Ok in C++*/

2 Zufällig gleiche Namen einer Struktur und einer Variablen machen in C keine Probleme. Wohl aber in C++....

int twin=99;

int main()
{
 struct twin{
   int x;
   int y;
   };
 struct twin value={ 200, 100};
 printf("%f\n",twin); /*Ok in C, falsch in C++*/
 .............

Um in C++ folgendes zu reallisieren.......

struct nested{
   struct struktur1{int a, int b}name;
   struct struktur1 name2;
   };

struct nested value1; /*Ok in C und C++*/
struct struktur1 value2;  /*Ok in C, falsch in C++*/

So macht man das zweite Beispiel in C++......

nested::struktur1 value; /*In C++ ok,in C falsch*/

Folgende Differenzen sind bei enum zwischen C und C++ zu beachten......

enum farben{rot,gruen,blau};
enum farben select;

farben select; /*Ok in C++, Fehler in C*/
select=rot;  /*Ok in C und C++*/
select=10;   /*Warnung in C, Fehler in C++*/
select++;    /*Ok in C, Fehler in C++*/

In C++ können sie also den enum-Variablen keine Werte übergeben ohnen diesen zu casten. Folglich würde funktionieren...

select=(enum farben)=10;  /*casting, daher Ok in C++*/  

..und außerdem können sie in C++ keine enum-Variale Inkrementieren.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf