PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : oprobelm klase



jan-heiner
21-11-2005, 19:09
hallo
ich hab garde mit c++ ange fanhgen und benutrze KDeveler
nun hab ich ein kleine program geschriebn mit einer kllasse und es gibt nur probelem
ich finde meine fehler nicht .

// kallse
#ifndef _jan_h
#define _jan_h

class jan
{
int f=444;
};
#endef


cpp

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "jan.h"
#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
cout << "Hello, world!" << endl;
int a;
a=10;
cout <<a;


return EXIT_SUCCESS;

fherlemedung
cd '/home/jan/Sachen/prigarme/ttt/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k
gmake all-recursive
Making all in src
if g++ -DHAVE_CONFIG_H -I. -I/home/jan/Sachen/prigarme/ttt/src -I.. -O0 -g3 -MT ttt.o -MD -MP -MF ".deps/ttt.Tpo" -c -o ttt.o /home/jan/Sachen/prigarme/ttt/src/ttt.cpp; then mv -f ".deps/ttt.Tpo" ".deps/ttt.Po"; else rm -f ".deps/ttt.Tpo"; exit 1; fi
In file included from /home/jan/Sachen/prigarme/ttt/src/ttt.cpp:25:
/home/jan/Sachen/prigarme/ttt/src/jan.h:8:2: error: invalid preprocessing directive #endef
/home/jan/Sachen/prigarme/ttt/src/jan.h:8:7: warning: no newline at end of file
/home/jan/Sachen/prigarme/ttt/src/jan.h:1:1: error: unterminated #ifndef
/home/jan/Sachen/prigarme/ttt/src/jan.h:6: error: ISO C++ forbids initialization of member ‘f’
/home/jan/Sachen/prigarme/ttt/src/jan.h:6: error: making ‘f’ static
/home/jan/Sachen/prigarme/ttt/src/jan.h:6: error: ISO C++ forbids in-class initialization of non-const static member ‘f’
gmake[2]: *** [ttt.o] Fehler 1
gmake[2]: Das Target »all« wurde wegen Fehlern nicht aktualisiert.
gmake[2]: Für das Ziel »all-am« ist nichts zu tun.
gmake[1]: *** [all-recursive] Fehler 1
gmake: *** [all] Fehler 2
*** Beendet mit Status: 2 ***


suse 10.0
wen jeman weiter weiß wäre das super

peschmae
21-11-2005, 21:50
Hallo und Willkommen hier.

Die Fehlermeldung sagts schon:
invalid preprocessing directive #endef
Das sollte #endif heissen.

Ausserdem darfst du in der Klassendeklaration die Elemente nicht initialisieren (es sei denn sie seien statisch) d.h. int f=444; geht nicht - hingegen int f; geht.

MfG Peschmä

Giuly
24-11-2005, 01:19
// kallse

#ifndef _jan_h
#define _jan_h

class jan
{
int f;
jan() {
f=444;
}
};
#endif
cpp


#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "jan.h"
#include <iostream>
#include <cstdlib>

int main(int argc, char *argv[])
{
std::cout << "Hello, world!" << std::endl;
int a=10;
std::cout << a;


return EXIT_SUCCESS;
}



Und beim schreiben/coden/lesen mal ein bisschen darauf achten, WAS man schreibt/liest. In der Schule lassen die dir ja auch nicht einen Fehler alle zwei Worte durchgehen, oder?

MfG

P.S.: Sofern du Analphabet sein solltest, die letzten beiden Sätze ignorieren.

peschmae
24-11-2005, 06:14
Und beim schreiben/coden/lesen mal ein bisschen darauf achten, WAS man schreibt/liest. In der Schule lassen die dir ja auch nicht einen Fehler alle zwei Worte durchgehen, oder?


@jan-heiner: Ich denke das könnte wirklich ein grosses Problem werden für dich. Ich meine Programmiersprachen nehmen es da schon *sehr* genau mit vertippsern und solchen sachen.
Was bei mir jeweils half um so fiese Fehler zu machen (am Anfang, mittlerweile mach ich davon nicht mehr so viele - dafür andere) ist den Code wo der Fehler ist Buchstabe für Buchstabe durchzulesen.
Wenn du nämlich einfach das Wort anguckst kanns gut sein dass dort #endef steht, du aber #endif liest weil du genau weisst dass es #endif heissen muss und deshalb wird wohl auch das dort stehen oder so...



P.S.: Sofern du Analphabet sein solltest, die letzten beiden Sätze ignorieren.

In seiner Linuxforen.de Sig steht was diesbezüglich http://www.linuxforen.de/forums/member.php?u=15005

MfG Peschmä

pucki
24-11-2005, 08:24
hi,

noch ein kleiner tip. es gibt beim programmieren ein paar konventionen die man versucht so gut wie möglich einzuhalten. das klappt nicht immer, aber üben hilft da.

- Konstanten komplett in Grossbuchstaben
z.B.
#define _JAN_

- bei Klassennamen der erste Buchstabe gross schreiben
z.B.
class Jan;

du findest dich damit auch selbst besser in deinem quellcode zurecht.

noch zur allgemeine form. die tatsache, dass du dich mit programmieren beschäftigst, zeigt mir, dass du, wenn auch wohl mit grossem aufwand, deine eingaben korrigieren kannst. schau mal ob du nicht gelegentlich mal den vorschau- button verwenden kannst.

zu den fehlermeldungen:

/home/jan/Sachen/prigarme/ttt/src/jan.h:8:2: error: invalid preprocessing directive #endef

der dateiname: jan.h:
die zeilennummer: 8:
und der Tabulator: 2:
zeigen dir wo der fehler zu finden ist. einfach diese dinge prüfen. wenn du mit der übersetzung probleme haben solltest, dann kann ich dir
http://dict.leo.org/ empfehlen (deutsch - englisch / englisch - deutsch)



/home/jan/Sachen/prigarme/ttt/src/jan.h:8:7: warning: no newline at end of file

der compiler möchte am dateiende noch einen zeilenumbruch haben (no newline). einfach nochmal die eingabetaste drücken.




/home/jan/Sachen/prigarme/ttt/src/jan.h:1:1: error: unterminated #ifndef

diese fehlermeldung resultiert aus der ersten meldung (8:2:2). die #ifndef - anweisug ist nicht abgeschlossen, es wird ein #endif erwartet ...

gruesse reinhard