如果我有一个基类:
class Base
{
public:
virtual void Test()=0;
};
并且,在一个动态加载的模块(.so/.dll)中,我实现了一个派生自这个的类:
class SomethingFromBase : Base
{
...
};
并且,一旦这个库被加载,用户就要求创建一个实例SomethingFromBase
(假设我们从 cin. 获得名称),并且,我们不知道SomethingFromBase
(即,没有办法只做if(inputstr == "SomethingFrombase") { ... }
有没有办法创建SomethingFromBase 的一个实例?
我相当肯定这在(标准)C++ 中是不可能的,但是,我总是希望 SO 会让我感到惊讶!
如果通过添加一些库可以做到这一点,我仍然想知道它。谢谢!
编辑:见 cdhowie 的回答。实施该技术的指南: http ://www.linuxjournal.com/article/3687?page=0,1 http://www.abstraction.net/ViewArticle.aspx?articleID=67