/////////////////////////////////////////////////////////////////// // AllUsers.cpp #include "AllUsers.h" #include <iostream> namespace // anonymous namespace { const long MAX_USERS = get_prop< long>( "max_users"); const int MAX_FAILS = get_prop< int>( "max_fails"); }; // anonymous namespace AllUsers::AllUsers() { std::cout << "there are max " << MAX_USERS << " users that can login." << std::endl; } /////////////////////////////////////////////////////////////////// // AllUsers.h #ifndef ALL_USERS_H #define ALL_USERS_H #include "app_props.h" struct AllUsers { AllUsers(); }; #endif /////////////////////////////////////////////////////////////////// // app_props.cpp #include "properties.h" #include <iostream> namespace Private { properties_base & get_properties_obj() { static properties props( "props.txt"); return props; } }; /////////////////////////////////////////////////////////////////// // app_props.h #include "properties_base.h" #include <iostream> namespace Private { properties_base & get_properties_obj(); }; template< class type> inline type get_prop( const std::string & strPropName) { type val = type(); Private::get_properties_obj().get( strPropName, val); return val; } /////////////////////////////////////////////////////////////////// // main.cpp #include "AllUsers.h" #include <iostream> AllUsers s_AllUsers; int main() { std::cin.get(); return 0; } #/////////////////////////////////////////////////////////////////// # props.txt "max_fails" "5" "max_users" "1000" |