fruit

Dependency injection framework for C++ with compile-time wiring

brewmacoslinux
Try with needOr install directly
Source

About

Dependency injection framework for C++

Examples

set up dependency injection in a C++ project$ brew install fruit && clang++ -std=c++11 -I$(brew --prefix fruit)/include your_code.cpp
inject dependencies automatically at compile time$ #include <fruit/fruit.h> fruit::Component<MyService> getComponent() { return fruit::createComponent(); }
bind interfaces to implementations for dependency injection$ fruit::Component<fruit::Required<Logger>> getComponent() { return fruit::createComponent() .bind<Logger, ConsoleLogger>(); }
inject constructor dependencies without manual factory code$ class UserService { public: INJECT(UserService(Database* db, Logger* log)) : db(db), log(log) {} };
resolve object graph dependencies at runtime$ fruit::Injector<MyComponent> injector = fruit::createInjector<MyComponent>(); auto service = injector.get<MyService*>();