Problem beim Einbinden eines Singletons



  • Hallo zusammen,

    Ich lerne C++ und versuche gerade einen Singleton einzubinden.
    Beim Kompilieren erhalte ich zwei Fehler, die ich auch nach
    längerem Ausprobieren nicht beheben konnte. Deshalb die Frage, wo liegt hier der Fehler?

    #ifndef SINGLETON_H
    #define SINGLETON_H
    
    class Foo{
    public:
    	static Foo& instance(){
    		static Foo _instance;
    		return _instance;
    	}
    	~Foo();
    	int doSomething(int b);
    private:
    	Foo(){};
    	Foo(const Foo&);
    	Foo & operator = (const Foo&);
    };
    #endif
    
    #include "singleton.h"
    
    int Foo::doSomething(int b){
    	b += 1;
    	return b;
    }
    
    #include <iostream>
    #include "singleton.h"
    
    int main()
    {
    	int b = 0;
    	b = Foo::instance().doSomething(3);
    	std::cout << b << std::endl;
    }
    

    Fehler 1
    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall Foo::~Foo(void)" (??1Foo@@QAE@XZ)" in Funktion ""void __cdecl `public: static class instance & __cdecl Foo::instance(void)'::`2'::`dynamic atexit destructor for '_instance''(void)" (??__F_instance@?1??instance@Foo@@SAAAV1@XZ@YAXXZ)". D:\Programmieren\C++(VisualStudio)\C++Aufgaben\iso6\iso_project_5\iso_project_5\main.obj iso_project_5

    Fehler 2
    error LNK1120: 1 nicht aufgelöste Externe D:\Programmieren\C++(VisualStudio)\C++Aufgaben\iso6\iso_project_5\Debug\iso_project_5.exe 1 1 iso_project_5

    Gruss Hoselupf



  • Du hast ~Foo() nirgendwo definiert...



  • Vielen Dank dot für die schnelle Antwort.
    Endlich funktioniert's 🙂

    Gruss Hoselupf


Log in to reply