Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Instantiierung einer Klasse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.10.2005, 23:15 Uhr
~fd62
Gast


Hi alle,

ein Anfänger hat da mal ne Frage. Brauche ne Möglichkeit dynamisch Klassen zu laden.
Ein Bekannter meinte es gebe in C/C++ die Möglichkeit aus einem String ne Klasse zu instantiieren.
Als Beispiel:

Man startet eine Anwendung namens BSP.exe und übergibt den Namen als Parameter:

C:\>BSP.exe "foo"

In BSP.exe findet man jetzt ne Stück der (in etwa) so aussieht:

int main(arg)

string s = arg;

foo einfoo;

einfoo = new *s;


Geht sowas?

Sorry, bin heut nich mehr in der Lage richtigen Code zu schreiben.

Danke und schönes Wochenende

Matthias

Dieser Post wurde am 09.10.2005 um 08:44 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.10.2005, 23:16 Uhr
~fd62
Gast


ok das Smiley war net geplant.
Die aber:

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.10.2005, 03:52 Uhr
imhotep
followed the white rabbit


Klar gibt es das. Ist die Frage wo die Klasse herkommt. Am einfachsten ist sie schon im Programm implementiert, wenn nicht müsste man mit shared libiaries rummähren.
Was man braucht ist eine virtuelle Basisklasse der benannten Klasse und eine Finderfunktion. Die Basisklasse muss alle Funktionen, die man später in der abgeleiteten Klasse aufruft schon haben, aber virtuell.


C++:
class basis {
  public:
    virtual int schnittstelle(void);
}

class foo : public basis {
  public:
    int schnittstelle(void) { return 10; }
}

basis * finder(string which){
  if (which.compare("foo")) return new foo();
  return 0;
}

int main(int argc, char *argv[]){
  basis *test = finder(argv[1]);
  if (test != 0) cout << test->schnittstelle() << endl;
}


(Code nicht vollständig und ohne Gewähr )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.10.2005, 09:41 Uhr
~fd62
Gast


Das Problem dabei ist, das bei dem Projekt neue Klassen dynamisch hinzugefügt werden sollen. Also keine Änderungen am Quelltext des Progs gemacht werden sollen.
Die Klassen haben aber auf jeden Fall ne abstrakte Oberklasse.
Mein Bekannter meinte dazu das man mit
C++:
new *s
eine Instanz "vom Inhalt des Strings s" erzeugen kann. Also die Frage geht das mit new *s?

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.10.2005, 09:47 Uhr
Spacelord
Hoffnungsloser Fall


nein
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.10.2005, 12:49 Uhr
~fd62
Gast


Danke, genau das was ich wissen wollte.

Schönes Wochenende
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: