For a c++ application which I'm currently being busy to develop, I have several classes which I need to access through my entire code, without creating a new object
So searching I have found that one of methods that can be used is with the extern linkage specifier.
I would like to know what is best way to use this extern method, I wrote a little sample code
classone.h
#ifndef CLASSONE_H
#define CLASSONE_H
class ClassOne
{
public:
    ClassOne();
    void showClassOneInt();
private:
    int m_classOneInt;
};
extern ClassOne *classOne;
---------------------------------------
classone.cpp
#include "classone.h"
#include <QDebug>
ClassOne *classOne;
ClassOne::ClassOne()
{
    m_classOneInt = 1;
}
void ClassOne::showClassOneInt()
{
    qDebug() << "ClassOneInt: " << m_classOneInt;
}
---------------------------------------
classtwo.h
#ifndef CLASSTWO_H
#define CLASSTWO_H
class ClassTwo
{
public:
    ClassTwo();
    void showClassTwoInt();
private:
    int m_classTwoInt;
};
#endif // CLASSTWO_H
---------------------------------------
classtwo.cpp
#include "classtwo.h"
#include <QDebug>
ClassTwo::ClassTwo()
{
    m_classTwoInt = 2;
}
void ClassTwo::showClassTwoInt()
{
    qDebug() << "ClassTwoInt: " << m_classTwoInt;
}
---------------------------------------
classthree.h
#ifndef CLASSTHREE_H
#define CLASSTHREE_H
class ClassThree
{
public:
    ClassThree();
    void showClassThreeInt();
private:
    int m_classThreeInt;
};
#endif // CLASSTHREE_H
---------------------------------------
classthree.cpp
#include "classthree.h"
#include <QDebug>
ClassThree::ClassThree()
{
    m_classThreeInt = 3;
}
void ClassThree::showClassThreeInt()
{
    qDebug() << "ClassThreeInit: " << m_classThreeInt;
}
---------------------------------------
classtest.cpp
#include "classtest.h"
#include "classone.h"
#include "classtwo.h"
#include "classthree.h"
//Class one pointer already in header
//Class two
extern ClassTwo *classTwo;
//Class three
extern ClassThree *classThree;
ClassTest::ClassTest()
{
    //Execute class one
    classOne->showClassOneInt();
    //Execute class two
    classTwo->showClassTwoInt();
    //Execute class three
    classThree->showClassThreeInt();
}
---------------------------------------
main.cpp
#include <QCoreApplication>
#include "classone.h"
#include "classtwo.h"
#include "classthree.h"
#include "classtest.h"
//Class one pointer already in header file
//Class two pointer
ClassTwo *classTwo;
//Class three pointer
ClassThree *classThree;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //Create object for class one
    classOne = new ClassOne;
    //Create object for class two
    classTwo = new ClassTwo;
    //Create object for class three
    ClassThree three;
    classThree = &three;
    //Create a classTest object
    ClassTest test;
    return a.exec();
}
Please could you tell me what is the best way, thanks for you help.
 
     
    