我的问题有点复杂。我有一个具有 Ports 对象的类(e:Component)。当一个组件创建一个端口对象时,它会将其方法之一传递给端口构造函数。
方法签名:
typedef std::vector<std::string> (Component::*ComponentMethod)(std::vector<std::string>);
如果我这样做,它工作正常:
// in class Component
std::vector<std::string> Component::test_method( std::vector<std::string> ) {
std::cout << "Hello !\n";
// Do stuff
}
// Port ctor : Port( ComponentMethod callback );
Port* p = new Port(&Component::test_method);
嗯...现在,我的问题是我创建了 Component 类的子类,但我不知道如何将 sublcasses 方法传递给 Port。
// in class SubtypeComponent
std::vector<std::string> SubtypeComponent::test_method2( std::vector<std::string> ) {
std::cout << "Hello !\n";
// Do stuff
}
// Port ctor : Port( ComponentMethod callback );
Port* p = new Port(&SubtypeComponent::test_method2);
// ERROR :'(
看起来很正常:我猜编译器需要精确的 Component (only) 方法。
--> 我正在寻找在端口中“动态”分配方法的解决方案(但我认为这是不可能的)
--> 也许另一个解决方案应该是使用模板?(定义“模板方法指针”而不是“组件方法指针”),但我不确定。
任何帮助,将不胜感激 :)