Autor Thema: C Klasse-Funktion außerhalb redefinieren  (Gelesen 6580 mal)

Pk3

  • Beiträge: 52
    • Profil anzeigen
    • Xyross
Gespeichert
« am: 03. September 2009, 10:36 »
Hi, bin grade dabei eine Klasse in C zu schreiben, komme aber
an einem Punkt nicht weiter.
Ich will eine Funktion, die in in einer Funktion definiert ist, außerhalb
der Klasse redefinieren. Also so:

class Klasse {
    public:
   
    void Funktion(int i);
};

Klasse KL;

void KL::Funktion(int i) {
    // ...
}

Da kommt dann diese Meldung:
KL is not a class or namespace
Bei
void KL.Funktion(int i) {
   // ...
}

kommt

expected initializer before '.' token|
Weiß jemand wie das richtig geht?

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« Antwort #1 am: 03. September 2009, 11:02 »
Kann sein, dass ich falsch liege, aber eigentlich sollte doch anstatt KL der Klassenname stehen, also wie folgt:
void Klasse::Funktion(int i) {
     // ...
}

Gruß Christian

Pk3

  • Beiträge: 52
    • Profil anzeigen
    • Xyross
Gespeichert
« Antwort #2 am: 03. September 2009, 11:04 »
Sorry, will das aber anders machen, z.B. so:

Klasse KL1
Klasse KL2
Klasse KL3

void KL1::Funktion(int i) {
printf("KL1");
}

void KL2::Funktion(int i) {
printf("KL2");
}

void KL3::Funktion(int i) {
printf("KL3");
}

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« Antwort #3 am: 03. September 2009, 11:39 »
Dann müsstest du die Klassen ableiten. In C++ wird das wie folgt gemacht (wie es mit Object-C aussieht, weiß ich nicht):
class Klasse {
    public:
   
    void Funktion(int i);
};
class KL1 : public Klasse {
    public:
   
    void Funktion(int i);
};
class KL2 : public Klasse {
    public:
   
    void Funktion(int i);
};
class KL3 : public Klasse {
    public:
   
    void Funktion(int i);
};

Dann würde das Konstrukt gehen. Mir ist nicht bekannt, dass das Konstrukt, wie du es machen möchtest, machbar ist. Aber ich weiß ja auch nicht alles. ;)

Pk3

  • Beiträge: 52
    • Profil anzeigen
    • Xyross
Gespeichert
« Antwort #4 am: 03. September 2009, 12:07 »
Vielen Dank, klappt wunderbar  :wink:!

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 03. September 2009, 12:25 »
Nach Offtopic verschoben. Hat offensichtlich nichts mit OS-Dev zu tun, sondern mit Unkenntnis einer Programmiersprache (und noch dazu Unkenntnis, welche Sprache man überhaupt schreiben möchte - es handelt sich um C++, nicht um C).
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen