【发布时间】:2017-09-25 16:25:22
【问题描述】:
我正在用 c++ 编写某种 DI 容器,我很好奇是否可以在现代 c++ 中创建从一种类型到另一种类型的别名。 我基本上想要做的是能够通过它的别名接口调用实现构造函数。像这样:
di::Register<Interface, Impl>();
di::Resolve<Interface>(); // -> Impl should be resolved
问题是到目前为止,我还没有找到在编译时为 Interface 和 Impl 设置别名的方法。我可以使用 RTTI 做到这一点,但我真的不想使用它。有可能吗?
【问题讨论】:
-
阅读[Boost].DI之类的内容可能会很有趣。
-
我实际上在我的DI container library 中使用
kgr::Default做了一些非常相似的东西 -
@GuillaumeRacicot 是的,但我不想在这种情况下使用继承,我认为它会使接口变得非常庞大。
-
@s0nicYouth 继承是我选择的实现方式。但是如果你稍微修改一下代码,你也可以用 using 语句做同样的事情。
标签: c++ c++11 metaprogramming