0
Quadtreeの構造を共有メモリに格納する必要があります。boost :: interprocess offset_ptrの使用
これは、ツリーノードの領域と点のベクトルの4つのポインタを持つクラスである:
typedef allocator<void, managed_shared_memory::segment_manager> void_allocator;
const void_allocator alloc_void(segment.get_segment_manager());
CSNode4* rootNode = segment.construct<CSNode4> (_RootNode) (alloc_void);
rootNode->node0 = new CSNode4(alloc_void,...);
:Iとして
class CSNode4
{
...
offset_ptr<CSNode4> node0;
offset_ptr<CSNode4> node1;
...
};
と使用して試みた
class CSNode4
{
...
CSNode4* node0;
CSNode4* node1;
CSNode4* node2;
CSNode4* node3;
vector<vec2> pointArray;
};
これは、static_cast node0を試すまで問題なく動作します。
offset_ptr<CSNode4> N1 = static_cast<CSNode4*>(rootNode->node0);
私が手:
エラーC2440: 'static_castを': '後押し::プロセス間を:: offset_ptr' から
'CSNode4 *' に変換することはできません
(MSVC 2010、1.42を高めます)私は間違って何をしていますか、どうすれば修正できますか?
おかげで、まだ動作していない 、今私が手:場所0x0075 ...私もGET()メンバを使用してみましたが を読ん アクセス違反を: offset_ptrあなたは直接offset_ptrのコピーコンストラクタを使用する必要があります node0_pt; node0_pt = rootNode-> node0; (node0_pt.get()) - > ...また動作していない... その他: CNode4の代わりCSNode4た構文は、 、アロケータは唯一のベクトルメンバーのために使用されていることを変更し、これに影響を与えるべきではないのですか? –
Mike