我是OOP的初学者,我的代码很难。问题是我只想发送一个未知类作为参数,以便我可以在函数内部进行转换并从特定类调用方法(作为参数传递)。我想知道是否有一些技巧,以便我不必使用模板,因为我不太了解它们。我的程序包含更多具有相同名称的方法的类,因此此时不会出现问题。如果我还没弄清楚,请在下面留言,我会尽力解释。谢谢!
void myClass::myFunc( _myInstance, _myMethod,void* object )
{
((_myInstace*)object)->_myMethod();
}
答案 0 :(得分:1)
没有模板,以合理的方式是不可能的。也许你可以使用一些宏来达到类似的效果,但我会高度劝阻它,因为它可能不会给你类型安全。
你必须使用这样的东西:
template<typename Type>
void func(void (Type::*method_name)(), void* object) {
(static_cast<Type*>(object)->*method_name)();
}
然后像这样使用它:
struct A { void fn() { std::cout << "Ok!"; } };
int main() {
A a;
void* ptr = &a;
func(&A::fn, ptr);
}