camper schrieb:
Fehler des Compiler, wahrscheinlich durch dqs inline verursacht. Vermutlich wird die Funktiondefinition noch einmal erneut ausgewertet, wenn der Code inline eingefügt werden soll, und Borland macht dabei den Fehler, die Funktion nicht im Kontext der ursprünglichen Definition zu betrachten.
Ich gehe mittlerweile auch davon aus, daß BC++ Murks macht. Für alle, die's nachstellen wollen:
#include <string.h>
#include <stdio.h>
class STRING
{
char text[256];
public:
void setText( const char *t )
{
strcpy( text, t );
}
const char *getText( void ) const
{
return text;
}
};
STRING &operator >> ( long value, STRING &destination );
inline STRING &operator >> ( int value, STRING &destination )
{
return ((long)value) >> destination;
}
STRING &operator >> ( long value, STRING &destination )
{
char tempBuffer[32];
sprintf( tempBuffer, "%ld", value );
destination.setText( tempBuffer );
return destination;
}
int main( void )
{
STRING str;
int value = 55;
value >> str;
printf( "%s\n", str.getText() );
return 0;
}
Ist der Prototyp STRING &operator >> ( long value, STRING &destination ); nach der Inlinefunktion, kracht es. So wie hier jedoch nicht.
mfg Martin