【发布时间】:2012-11-25 17:29:45
【问题描述】:
我的问题有点复杂。 我有一个具有 Ports 对象的类(e:Component)。 当组件创建一个 Port 对象时,它会将其方法之一传递给 Port 构造函数。
方法签名:
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) 方法。
--> 我正在寻找在 Ports 中“动态”分配方法的解决方案(但我认为这是不可能的)
--> 也许另一个解决方案应该是使用模板? (定义“模板方法指针”而不是“组件方法指针”),但我不确定。
任何帮助将不胜感激:)
【问题讨论】:
标签: c++ templates subclass member-function-pointers mem-fun