Возвращение экземпляров синглтонов по ссылке

This commit is contained in:
Andrei Astafev 2020-04-09 09:45:20 +03:00
parent 7ec97f8f19
commit e160b83c45
4 changed files with 15 additions and 15 deletions

View File

@ -19,18 +19,18 @@ int main( int argc, char** argv )
(void)argc;
(void)argv;
QCoreApplication::setApplicationName( QStringLiteral( CMLIB_PROJECT_NAME ) );
MF::PathsMT* pathsMT = MF::PathsMT::instance();
MF::Paths* paths = MF::Paths::instance();
MF::PathsMT& pathsMT = MF::PathsMT::instance();
MF::Paths& paths = MF::Paths::instance();
pathsMT->init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) );
pathsMT->findConfigFile( QStringLiteral( "test" ) );
qDebug() << pathsMT->systemLogDirectory();
qDebug() << pathsMT->systemConfigDirectory();
pathsMT.init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) );
pathsMT.findConfigFile( QStringLiteral( "test" ) );
qDebug() << pathsMT.systemLogDirectory();
qDebug() << pathsMT.systemConfigDirectory();
paths->init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) );
paths->findConfigFile( QStringLiteral( "test" ) );
qDebug() << paths->systemConstDataDirectory();
qDebug() << paths->configFileName();
paths.init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) );
paths.findConfigFile( QStringLiteral( "test" ) );
qDebug() << paths.systemConstDataDirectory();
qDebug() << paths.configFileName();
return( 0 );
}

View File

@ -85,10 +85,10 @@ public:
* @brief getInstance
* @return Уникальный экземпляр класса Paths
*/
static Paths* instance()
static Paths& instance()
{
static Paths p;
return( &p );
return( p );
}

View File

@ -13,7 +13,7 @@ namespace filesystem {
PathsMT::PathsMT() = default;
PathsMT* PathsMT::instance()
PathsMT& PathsMT::instance()
{
volatile PathsMT* localInstance = mInstance.load( std::memory_order_acquire );
if ( localInstance == nullptr )
@ -26,7 +26,7 @@ PathsMT* PathsMT::instance()
mInstance.store( const_cast< PathsMT* >( localInstance ), std::memory_order_release ); // NOLINT
}
}
return( const_cast< PathsMT* >( localInstance ) ); // NOLINT
return( const_cast< PathsMT& >( *localInstance ) ); // NOLINT
}
} // namespace filesystem

View File

@ -40,7 +40,7 @@ public:
* @brief getInstance
* @return Уникальный экземпляр класса PathsMT
*/
static PathsMT* instance();
static PathsMT& instance();
}; // class PathsMT
} // namespace filesystem