Op zondag 07 oktober 2001 13:16 schreef M_KOS het volgende:
code:
1
2
3
4
5
6
7
| #include<stdio.h>
{
char array[8];
scanf ("%s",array);
switch (array) {
case "ha" doe iets
} |
Maar dit werkt niet.
Hoe moet het dan?
Als je nu even in de
***HELPFILES*** had gelezen had je daar het volgende zien staan:
The expression must be of an integral type or of a class type for which there is an unambiguous conversion to integral type.
Oftewel je mag alleen switchen op integrale types of classes die een impliciete conversie naar een integraal type toestaan, en dan vergelijkbaar is met een constante. Dus op:
char, short, int, long, __int64, allemaal signed of unsigned.
edit:
Zie net dat je vraag over C gaat dus de rest van deze post mag je voorlopig vergeten
Switchen op een class is toegestaan als ie een functie als volgt heeft:
code:
1
2
3
4
5
6
| class MyClass
{
...
operator int() { return x; }
...
}; |
Omdat de class dan feitelijk als integraal type gebruikt kan worden in de volgende statement:
code:
1
2
| MyClass Piet;
int Jan = Piet; |