C++动态调用的有关问题

C++动态调用的问题
 我想完成这样的功能:比如说有两个类A和B,当我输入A的时候就调用A类实现A的功能,输入B的时候就调用B类实现B的功能。这在C++中有没有办法实现呢?属于哪一方面的知识?求指教!
------解决方案--------------------
问得很难看懂。

猜着说两句,有类A,输入A调用A的功能(成员),这个功能(成员)必须是静态的,否则就要通过该类的实例才可以。

class T
{
public:
  static void func(int i){ // 共有静态成员函数
      std::cout << i << std::endl;
  };
};

int main(int argc)
{
   T::func(3333333);
   return 0;
}
------解决方案--------------------
类似于插件的实现。
需要定义一套插件接口,及插件要实现的功能。

大部分IDE都或多或少地支持DLL插件模式。如VCL中的包加载机制, eclipse 中的众多插件,photoshop,autocad等也有众多第三方插件。

一个通用插件,其接口如何定义是关键。接口必须清晰易用,否则该接口就只是你自己一个人在用了。

输入A的时候就调用A类实现A的功能,相对简单地说,对现有程序A类是未知的,是一个笼统的说法,当你输入A的时候,就生成一个A类,接着调用它的接口。

一个简单的方式是命令行接口,这在linux中很流行,输入A就是调用命令A,将接口参数放在命令行参数中,这就是命令行接口。而DLL接口则是加载DLL,调用接口中设定的函数来完成接口的功能。这些为外部接口。BPL方式也属于外部接口,只是当年的borland扩展了这个接口,让BPL可以方便地编译到EXE中去。

如果接口在程序内部实现,则相似于程序库,或类库。要实现输入A调用A的功能,那么程序就需要知道是否有A,那么就有一个注册器如:
一个简单例子:
MyFun.h:
typedef void (*TMyFun)();//接口函数定义。
typedef std::map<String , TMyFun> TMyFunLib ; //接口库
extern TMyFunLib MyFunLib ;
extern void MyFunRegister();
MyFun.cpp:
TMyFunLib MyFunLib ;
void funA() {ShowMessage("A");}
void funB() {ShowMessage("B");}
//注册过程
void MyFunRegister()
{
MyFunLib["A"]=funA;
MyFunLib["B"]=funB;
}
//下面是使用:调用A的方法
void Run(String funName = "A")
{
MyFunRegister();//先注册
TMyFunLib::iterator p = MyFunLib.find(funName);
if(p != MyFunLib.end())
  p->second();//通过函数指针调用。。。
}

上面是函数接口的例子。类接口类似。只是"类接口"需要先定义一个"接口类",然后通过接口生成一个类,程序就可以简单地通过类的实例调用其预设功能了。

总的来说,就是事先规划好一个运行的框架(或者说模式),然后让其他程序来填写框架中的内容。这个框架,小一点,程序员习惯称之为接口,大一点,就称之为框架。建立一个框架,让其能解决实际问题,称之谓建模。


------解决方案--------------------
脚本语言很好实现,c++不好办,可能boost中有你要的功能。
------解决方案--------------------
回调函数,将A类通过函数参传给B类,B类将返回值赋值给变量!变量调用A类相同函数,实现一个动态绑定!