If I implement the create method of the class in .cpp I get 

error LNK2019: unresolved external symbol "protected: \_\_thiscall Singleton::Singleton(void)" (??0Singleton@@IAE@XZ) referenced in function "public: static void \_\_cdecl Singleton::create(void)" (?create@Singleton@@SAXXZ

However if I implement the method inside the header file it compiles without any error :S

header file

```
 #pragma once
 #include <iostream>
class Singleton
{
 public:

static Singleton * getInstance()
{
    return s_instance;
}

static void create();
static void destroy();

void help();

protected:

static Singleton * s_instance;
Singleton();
};

```

source file:

```
#include "Singleton.h"

Singleton * Singleton::s_instance = NULL;

 void Singleton::create()
{
    if (!s_instance)
    {
         s_instance = new Singleton;
    }
}

void Singleton::destroy()
{
    delete s_instance;
    s_instance = NULL;
}

```

However If I implement the create method inside the header it does not throws any error

Header file with create method implemented in it

```
#pragma once
#include <iostream>
class Singleton
{
public:

    static Singleton * getInstance()
    {
        return s_instance;
    }

    static void create(){
        if (!s_instance)
        {
            s_instance = new Singleton;
        }
    }
    static void destroy();

protected:

    static Singleton * s_instance;
    Singleton();
};

```