Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision b9dcff08

Von Christian Ehringfeld vor mehr als 9 Jahren hinzugefügt

  • ID b9dcff080131f695a45dba7941690ff340f45a61
  • Vorgänger 2ee5022f
  • Nachfolger 3160499c

fix

Unterschiede anzeigen:

src/entityinstancefactory.cpp
#include "entityhelper.h"
#include <QMetaType>
using namespace CuteEntityManager;
QHash<QByteArray, EntityInstanceFactory::Constructor>
EntityInstanceFactory::instance =
QHash<QByteArray, EntityInstanceFactory::Constructor>();
EntityInstanceFactory::EntityInstanceFactory() {
}
src/entityinstancefactory.h
//http://www.mimec.org/node/350
template<typename T>
static void registerClass() {
constructors().insert( T::staticMetaObject.className(), &constructorHelper<T> );
EntityInstanceFactory::instance.insert( T::staticMetaObject.className(), &constructorHelper<T> );
QString lName = "QList<QSharedPointer<";
lName.append(T::staticMetaObject.className());
lName.append(">>");
......
}
static Entity *createObject( const QByteArray &className) {
Constructor constructor = constructors().value( className );
if ( constructor == NULL ) {
return NULL;
Constructor constructor = EntityInstanceFactory::instance.value( className );
if ( constructor == nullptr ) {
return nullptr;
}
return (*constructor)();
}
......
static Entity *constructorHelper() {
return new T();
}
static QHash<QByteArray, Constructor> &constructors() {
static QHash<QByteArray, Constructor> instance;
return instance;
}
static QHash<QByteArray, Constructor> instance;
protected:
EntityInstanceFactory();

Auch abrufbar als: Unified diff