CreateFileMapping包含包含虚方法的类

时间:2012-01-04 03:18:12

标签: c++ shared-memory virtual-functions

我想创建一个类的实例并将其放在共享内存中,以便可以从多个进程调用相同的实例。但是,这个类有虚拟方法,我认为可能会导致问题,因为我已经读过映射数据不能包含指针,这就是类中vtable的情况。它会起作用吗?

1 个答案:

答案 0 :(得分:0)

正如Kerrek SB评论的那样,您无法映射包含虚拟方法的类。但是您可以创建一个没有虚拟的简单结构或类,映射它,然后将指针指向另一个具有虚拟的类并使用plain结构作为其实现。基本上是Pimpl idiom

如果需要,您甚至可以通过在plain结构中存储“type”整数来检查虚拟调度,并检查它以决定调用哪些函数。