【发布时间】:2012-01-04 03:18:12
【问题描述】:
我想创建一个类的实例并将其放在共享内存中,以便可以从多个进程调用同一个实例。但是,这个类有虚拟方法,我认为这可能会导致问题,因为我已经读取了映射数据不能包含指针,这就是类中的 vtable 的情况。它会起作用吗?
【问题讨论】:
-
简答:否。长答:Noooooooo。
标签: c++ shared-memory virtual-functions
我想创建一个类的实例并将其放在共享内存中,以便可以从多个进程调用同一个实例。但是,这个类有虚拟方法,我认为这可能会导致问题,因为我已经读取了映射数据不能包含指针,这就是类中的 vtable 的情况。它会起作用吗?
【问题讨论】:
标签: c++ shared-memory virtual-functions
正如 Kerrek SB 所评论的,您不能映射包含虚拟方法的类。但是您可能可以创建一个没有虚拟的简单结构或类,将其映射,然后将指向它的指针指向另一个具有虚拟并使用普通结构作为其实现的类。基本上,Pimpl idiom。
如果需要,您甚至可以通过在普通结构中存储一个“类型”整数并检查它来决定调用哪些函数来自己执行虚拟调度之类的操作。
【讨论】: