Switch in Klasse wird nicht Inline expandiert ???
-
Moin,
Ich möchte mir nen kleinen Hp-Generator basteln und dafür brauch ich ne
Klasse die mir die verschiedenen Vorlagen etc. immer bereit hält.Nun alles schön und gut, dennoch bekomm ich folgendes gesagt :
C:\Programme\Borland\CBuilder6\Bin>BCC32 waldi.cpp Borland C++ 5.6 für Win32 Copyright (c) 1993, 2002 Borland waldi.cpp: Warnung W8027 waldi.cpp 499: Funktionen, die switch enthalten, werden nicht als Inline expandiert Turbo Incremental Link 5.60 Copyright (c) 1997-2002 BorlandMeine Frage was meinen "die" mit, werden nicht als Inline expandiert ?
Das hier ist meine Klasse :
class Vorlage { public: int getVorlage() { return myTemp; } void setVorlage(int temp) { myTemp = temp; } int getHTML() { cout << "\nFolgender HTML-Code liegt bei: \n\n\n"; switch (myTemp) { case 1 : cout << "<html>\n<title>Test</title>\n<body>\n\nTEST\n\n</body>\n</html>"; break; case 2 : cout << "<html>\n<title>Test</title>\n<body>\n\nTEST2\n\n</body>\n</html>"; break; default: cout << "Vorlage exestiert nicht !"; break; } return 0; } int htmlcode; private: int myTemp; };Frage[2]: Wieso kommt bei der Ausgabe im Dos Fenster immer am Ende ne 0 ?!? Klar ist, es liegt am return, aber wie bekomm ich das weg ?
Ausgabe wäre:
Es wurde die Vorlage: 1 gewaehlt ! Folgender HTML-Code liegt bei: <html> <title>Test</title> <body> TEST </body> </html>0greets
sphonyx
-
Must uns schon zeigen wie du Vorlage::getHTML() aufrufst.
Nehme an du machstcout << somevar.getHTML();wenns so ist dann besser
somevar.getHTML();
-
Implementier die Memberfunktion ausserhalb der Deklaration. Dann kommt die Warnung nicht mehr.
-
Für Leute die das gleiche Problem haben :
int main() { Vorlage *temp1 = new Vorlage; //Setze Vorlage (*temp1).setVorlage(1); cout << "Es wurde die Vorlage: " << (*temp1).getVorlage() << " gewaehlt !\n\n"; //Hole HTML-CODE cout << (*temp1).getHTML(); }^^ mein Aufruf der var mit pointern
Durch das verbessern von
cout << (*temp1).getHTML();auf
(*temp1).getHTML();ist schonmal die 0 futsch

-
a) Du solltest den Speicher wieder freigeben
b) Anstatt (*a).b kann man einfach a->b schreibenGruß
-
Habe die Ausgaben alle aufgehoben, da ich den Code nun in Borland benutzen will und das nicht als Consolen-Andwendung:
Da temp1->getHTML(); mir meinen Html Source wiedergibt habe ich dies hier versucht, um den Source in eins meiner TEXT-labels zu pressen :
AnsiString var; //* AnsiString, da String in Label muss int getHTML() { /* Only in DOS: cout << "\nFolgender HTML-Code liegt bei: \n\n\n"; */ switch (myTemp) { case 1 : var = "<html>\n<title>Test</title>\n<body>\n\nTEST\n\n</body>\n</html>"; break; case 2 : var = "<html>\n<title>Test</title>\n<body>\n\nTEST2\n\n</body>\n</html>"; break; default: /* Only in DOS: cout << "Vorlage exestiert nicht !"; */ break; } }Label8->Caption = temp1->getHTML(); //* HTML-Code auslesenDas Text-label ändert sich, aber nicht mit dem von mir geforderten Source sondern, mit einer komischen Nummer (1244884)
Was ist das ?
-
dein getHTML() sollte ein int zurückgeben. Du gibst aber nichts zurück ( kein return ) also ist der rückgabewert undefiniert.
machs soAnsiString getHTML() { /* Only in DOS: cout << "\nFolgender HTML-Code liegt bei: \n\n\n"; */ AnsiString var; switch (myTemp) { case 1 : var = "<html>\n<title>Test</title>\n<body>\n\nTEST\n\n</body>\n</html>"; break; case 2 : var = "<html>\n<title>Test</title>\n<body>\n\nTEST2\n\n</body>\n</html>"; break; default: /* Only in DOS: cout << "Vorlage exestiert nicht !"; */ break; } } return var; }
-
Ok danke, hiermit funtzt es :
AnsiString getHTML() { /* Only in DOS: cout << "\nFolgender HTML-Code liegt bei: \n\n\n"; */ AnsiString var; switch (myTemp) { case 1 : var = "<html>\n<title>Test</title>\n<body>\n\nTEST\n\n</body>\n</html>"; break; case 2 : var = "<html>\n<title>Test</title>\n<body>\n\nTEST2\n\n</body>\n</html>"; break; default: /* Only in DOS: cout << "Vorlage exestiert nicht !"; */ break; } return var; }