Klasse erzeugen



  • hallo,

    ich habe eine Klasse. Diese möchte ich mit einem Makro instanzieren:

    DECLARE_CLASS(ClassName);

    das sollte folgendes machen:

    void mkclass()
    {
    ClassName myClass = ClassName();
    }

    doch wie kann ich sowas lösen? Ich will einfach ein Makro aufrufen, was eine function an der Stelle einfügt und in der Funtion ein neues Object von der Klasse, die in ClassName steht erzeugt wird???

    MfG



  • Wozu?Was willst du erreichen?Eventuell geht es anders.Weil das was du machen willst, ist nicht gerade sinnvoll.Schließlich sind Makros nur Namensersetzer.



  • ich will eine Lib schreiben, die unter Linux und Windows laufen soll .. somit muss ich mal int main() definieren mal int WINAPI WinMain().

    Darin möchte ich ein Objekt erzeugen, der Name der Klasse ist jedoch nicht bekannt und muss per Parameter übergeben werden (im Makro).

    MfG


  • Administrator

    1. Unter Windows mit Fenster und ohne Konsole kannst du auch int main() verwenden. Einfach unter Visual Studio bei "Linker->System->Subsystem" Windows (/SUBSYSTEM:WINDOWS) auswählen und unter "Linker->Advanced->Entry Point" mainCRTStartup hinschreiben. An die Parameter von WinMain kommst du unter Win32 und höher sowieso mit normalen Funktionen ran:
    hInstance -> GetModuleHandle(0)
    hPrevInstance -> ist immer NULL
    lpCmdLine -> GetCommandLine() oder über int main(int argc, char* argv[])
    nCmdShow -> GetStartupInfo(...) , da bekommst du sogar noch mehr Infos

    (Win32 und höher heisst 32 Bit und höher, unter 16 Bit stimmt GetModuleHandle(0) nicht mit hInstance überein)

    2. Wo wäre eigentlich das Problem mit dem Makro? Was verstehst du nicht beim Erstellen von Makros?

    Grüssli



  • ahh okey,

    hat sich erledigt. Lag an einem Fehler in der Funktion an sich...

    thx


Anmelden zum Antworten