Pointer auf eine Methode( mit Templates



  • Servus,
    ich will mit Templates in einer Klasse( cPointer ),einen Pointer auf irgendein Object ( Test ), der Klasse ( cTest ) und einer Methode dieser Klasse ( cTest::DoSomething ) zeigen. Und dann mit der Methode ( cPointer::Do() ) will ich die Methode ( cTest::DoSomething ) aufrufen.

    Dazu habe ich diesen Code geschrieben :

    Die Klasse cTest

    class cTest
    {
    public:
    	void DoSomething()	
            {
            }
    };
    

    Die Klasse cPointer

    template<class Class>
    class cPointer
    {
    private:
    	Class* Object;
    	void(Class::*Method)(void);
    
    public:
    	cPointer( Class* Object, void(Class::*Method)(void))
    	{
    		this->Method = Method;
    		this->Object = Object;
    	}
    
    	void Do()
    	{
    		(this->Object->*this->Method)();
    	}
    };
    

    Und die Main-Funktion

    int main()
    {
    	cTest Test;
    	cPointer<cTest> Pointer( &Test, &cTest::DoSomething );
    
    	Pointer.Do();	
    }
    

    Aber ich bekomm immer die Fehlermeldung

    Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup". MSVCRTD.lib
    Fehler 2 fatal error LNK1120: 1 nicht aufgelöste externe Verweise. C:\Programmierung\C++\Projects\Test\Debug\Test.exe 1

    Wisst ihr vll. woran das liegt, bzw ich mein Problem lösen könnte ?

    Vielen Dank schonmal im Voraus
    MfG Icon



  • Probier mal tchar.h zu includieren und die korrekte main Signatur für Windows Projekte zu verwenden.

    Oder Du kannst dein Projekt auch Console umstellen.

    Simon



  • Nusso schrieb:

    ...
    Aber ich bekomm immer die Fehlermeldung

    Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup". MSVCRTD.lib
    Fehler 2 fatal error LNK1120: 1 nicht aufgelöste externe Verweise. C:\Programmierung\C++\Projects\Test\Debug\Test.exe 1

    ...

    Ich weiß nur, dass das nichts mit Deinem Quellcode selbst zu tun hat, sondern ein Problem mit Deiner Entwicklungsumgebung.
    Es sieht so aus als hättest Du nicht klar, ob Du ein "Fensterprogramm" bauen möchtest oder nicht....
    Du kannst erstmal mit einem hello-world-Programm experimentieren.

    Gruß,

    Simon2.



  • Ohh Ok thx, ich dachte ich hatte Konsolenanwendung ->LeeresProjekt angeklickt,
    aber Danke


Anmelden zum Antworten