PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c++ Klassen


Supa
2005-12-17, 23:39:35
hab das Problem ich bekomm immer die Fehler meldung "cannot call member function `int Datei::readNumbers(int, int*)' without object " beim compilieren.

auf gerufen hab ich "w = Datei::readNumbers(10, a[499]);"

:confused:

falls mehr informationen erwünscht sind nur fragen.

Der besonderst Kluge
2005-12-18, 00:03:37
Der besonderst Kluge sagt,...

dass du keine Ahnung von OOP hast. Sprich Beziehung Klasse <-> Instanz. Buch lesen oder Tutorial machen.

Machts gut, ihr Tr*****

Aqualon
2005-12-18, 00:04:16
Du brauchst ein Objekt von Datei, um die Methode aufrufen zu koennen.

Datei* mydat = new Datei();
mydat -> readNumbers(...);

Aqua

Gast
2005-12-18, 00:08:34
Datei datei;
datei.readNumbers(...);

Supa
2005-12-18, 00:28:20
ähm ja? warum muß ich den rückgabe wert in ein Objekt des typs Datei speichern? zurück geben wird ein int :|



Edit: Dieser mist mußte vernichtet werden :biggrin:


PS: Keine Garantie dass das funzt, konnte bisher nicht nach logischen fehler auf die suche gehen, da ich es erst gar nicht aufgerufen bekomme... Ich glaub sowie so das ich so alles falsch gemacht hab was man falsch machen kann, muß mich erst an Klassen gewöhnen, man war pascal schön einfach :redface:

Der besonderst Kluge
2005-12-18, 00:34:36
Der besonderst Kluge weiß,

dass die i/o-Streams auch für int/float/double/etc überladen sind -ROFL
Außerdem hast du _KEINE_ Ahnung von OOP. Les ein Tutorial oder ein Buch. Glaube mir es ist das beste.

Coda
2005-12-18, 01:02:40
Mal wieder ein Troll der Ahnung hat - wie erfrischend :D

Supa
2005-12-18, 11:42:51
Natürlich habe ich davon keine Ahnung das war der erste versuch in OOP, dafür hab ichs jetzt verstanden, das wichtige hab ich immer überlesen :rolleyes:

Gnafoo
2005-12-18, 13:32:21
Du brauchst ein Objekt von Datei, um die Methode aufrufen zu koennen.

Datei* mydat = new Datei();
mydat -> readNumbers(...);

Aqua

Will es nur der Vollständigkeit halber erwähnen, wenn hier schon jemand mit OOP unter C++ am lernen ist. Nicht vergessen, das Objekt auch wieder mit delete zu löschen, wenn es mit new erstellt wurde.

delete(mydat);

am Ende und gut ist.

Der besonderst Kluge
2005-12-18, 14:48:40
delete(mydat);



Der besonderst Kluge weiß,...
dass delete ein Operator ist. Lass die Klammern weg die verwirren nur. Dann sieht es für einen Anfänger aus wie eine Funktion.

Supa
2005-12-18, 14:53:45
wann wird der destruktor (~datei) automatisch aufgerufen, nur um sicher zugehen?


int main()
{
{
Datei datei(irgend was); <- 1. hier?
datei.bla(irgendwas); <- 2. hier?
}; <- 3. hier?
}; <- 4. hier?


ich glaube bei 3, also nach dem Block, stimmt das?

Der besonderst Kluge
2005-12-18, 15:04:28
wann wird der destruktor (~datei) automatisch aufgerufen, nur um sicher zugehen?


int main()
{
{
Datei datei(irgend was); <- 1. hier?
datei.bla(irgendwas); <- 2. hier?
}; <- 3. hier?
}; <- 4. hier?


ich glaube bei 3, also nach dem Block, stimmt das?

Der besonderst Kluge sagt,...

Ja das stimmt. Lass die Semikolons hinter den Blöcken weg. Man braucht sie nur bei der Bekanntmachung neuer Typen (also bei Klassen, Structs etc). Das liegt daran dass man bereits da Objekte erstellen kann.

class Klasse {

} objekt_a, objekt_b;

Hoffe das war verständlich :)