mein problem:
IAnInterface.h
Code: Alles auswählen
#ifndef IANINTERFACE_H
#define IANINTERFACE_H
class IAnInterface {
public:
virtual ~IAnInterface() {}
public:
virtual void doSomeMagic() =0;
};
#endif // IANINTERFACE_HCode: Alles auswählen
#ifndef ANINTERFACEIMPLEMENTATION_H
#define ANINTERFACEIMPLEMENTATION_H
#include <QObject>
#include "IAnInterface.h"
class AnInterfaceImplementation : public IAnInterface {
public:
static IAnInterface* Instance () {
static SyncRoot _SyncRoot;
if (!_Instance)
_Instance = new AnInterfaceImplementation();
return _Instance;
}
private:
static IAnInterface* _Instance;
AnInterfaceImplementation();
AnInterfaceImplementation(const AnInterfaceImplementation&);
~AnInterfaceImplementation(){ }
class SyncRoot {
public:
~SyncRoot() {
if(AnInterfaceImplementation::_Instance != NULL) {
delete AnInterfaceImplementation::_Instance;
AnInterfaceImplementation::_Instance = NULL;
}
}
};
public:
void doSomeMagic();
};
IAnInterface* AnInterfaceImplementation::_Instance = 0;
#endif // ANINTERFACEIMPLEMENTATION_HCode: Alles auswählen
#include "AnInterfaceImplementation.h"
AnInterfaceImplementation::AnInterfaceImplementation(){
}
void AnInterfaceImplementation::doSomeMagic() {
//
}Code: Alles auswählen
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include "IAnInterface.h"
#include "AnInterfaceImplementation.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
IAnInterface* anObject = AnInterfaceImplementation::Instance();
anObject->doSomeMagic();
}
MainWindow::~MainWindow()
{
delete ui;
}Code: Alles auswählen
P:/Projects/Qt/Test_MultipleDefinition/Test_MultipleDefinition/IAnInterface.h::-1: error: multiple definition of `AnInterfaceImplementation::_Instance'
debug/MainWindow.o:P:/Projects/Qt/Test_MultipleDefinition/Test_MultipleDefinition/MainWindow.cpp::-1: error: first defined here