【发布时间】:2021-02-24 11:03:45
【问题描述】:
我有一个结构,它包含一个指向对象的 void* 指针和一个指向该对象类的某些方法的函数指针。我没有(也不能)拥有该对象类的信息,所以我需要一个 void*。我试图通过这个来调用该方法:
object->*function(args)
当我尝试用 msvc 编译它时,我得到两个错误:C2296 和 C2297 C2296 声明,“->”无效,因为左操作数无效,因为它的类型为“void” C2297 状态相同,但使用正确的操作数和类型“bool”
【问题讨论】:
-
不知何故“我没有(也不能)拥有该对象类的信息,”不适合拥有成员函数指针。如果你有一个成员函数指针,你需要知道对象的类型是什么
-
换句话说:
function来自哪里?如果您愿意,可以从成员函数指针推断类型,但正如答案中指出的那样,它必须适合对象的实际类型 -
在不知道它所属的类的类型及其定义的情况下,您不能拥有指向成员的指针,因此您要么没有这样的指针,要么可以(并且确实)有关于班级的信息。
-
向我们展示这个类,而不是用英语描述它。
-
我认为您可以使用虚函数作为您正在做的事情的简单替代方案。除非您提供更多信息,否则我无法确定。
标签: c++