singleton design pattern

My singleton class looks like these




#ifndef _SINGLETON_H
#define _SINGLETON_H

#include <stdio.h>
#include <stdlib.h>
#incldue "MyStuff.h"

class Singleton{

public:
MyStuff_class *mYstuff_Ptr;

static Singleton* getInstance(){
if (instance == 0){
instance = new Singleton;
} // end if
return instance;
}



private:
Singleton(){
void init();
}
void init(){
mYstuff_Ptr = new MyStuff_class();
}
static Singleton* instance;
};

Singleton* Singleton::instance = 0;


#endif /* _SINGLETON_H */

This above code is in one file

I wants mYstuff_Ptr access to all other class in my project.(one instance can accessed globally)

But my problem is above code works for only time

Example:

#include <iostream>
#include "SINGLETON.h"

int main()
{
//I able to acces MyStuff_class via this below code
Singleton::getInstance()->mYstuff_Ptr;
return 0;
}
//above code runs smoothly

If i include "SINGLETON.h" file in other file(example "Graphics.h")


#include <iostream>

#include "SINGLETON.h"
#include "Graphics.h"

int main()
{
//I able to acces MyStuff_class via this below code
Singleton::getInstance()->mYstuff_Ptr;
return 0;
}


First Error : I got a this error "private : static class singleton::instance ... is already in main.obj


Second Error: redefined...



Can anyone know how to make mYstuff_Ptr accessble from anywhere in my project using singleton design pattern.

Is it possible in Singleton design pattern


Most of the articles about singleton class in the internet is like this

#include <iostream>

class singleton{
....
}
int main()
{
//used inside main function
}

/// Please help me how to make mYstuff_Ptr globally accessble


Singleton* Singleton::instance = 0;

must be in a source file, not a header.
Thanks PanGalactic after adding it in source file it Works fine
Topic archived. No new replies allowed.