基本クラスがある場合:
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