将未知类作为参数传递
Passing an unknown class as parameter
我是OOP的初学者,我的代码很难处理。问题是,我只想发送一个未知类作为参数,这样我就可以在函数内部进行强制转换,并调用特定类中的方法(作为参数传递)。我想知道是否有一些技巧可以让我不必使用模板,因为我不太了解它们。我的程序包含更多具有相同名称的方法的类,所以在这一点上不会出现问题。如果我还没有说清楚,请在下面留言,我会尽力解释的。谢谢
void myClass::myFunc( _myInstance, _myMethod,void* object )
{
((_myInstace*)object)->_myMethod();
}
没有模板,这是不可能的。也许你可以使用一些宏来实现类似的效果,但我强烈反对这样做,因为它可能不会给你类型的安全性。
你必须使用这样的东西:
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);
}
现场演示
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用指向成员的指针将成员函数作为参数传递
- 如何将参数传递给正在使用模板的类
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将部分流作为参数传递
- 我正在开发服务器,ip作为参数传递不起作用
- 将成员函数指针作为参数传递给模板方法
- 如何在C++中将迭代器作为函数参数传递
- 将附加参数传递给使用 beast::bind_front_handler 调用的函数
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 将参数传递为"const"的奇怪效果
- 如何在 c++ 中将函数作为参数传递?
- 当数组大小在C++中未知时,如何在运行时将对字符串数组的引用作为函数参数传递?
- 将未知结构(在运行时)作为模板参数传递
- C++:传递未知并集作为参数
- 如果数组大小未知,如何将函数数组作为参数传递
- 将未知类作为参数传递
- 移动语义:从"类型&&"到"类型"的转换无效。模板:将未知参数传递给重载函数
- Boost::Program_options,传递未知的命令行参数