キャストして保存するときは、vector等のコンテナ要素をポインタにするというか、ベストプラクティスがわからん、そもそもこの設計はよくないかも。使ったプログラムを書いている。C++の世界だけで完結するならこれでいいのだけれども、mrubyをバインディングしようとすると困った。持たせるようになっていて、mrubyだとDATA_PTRマクロでRubyのオブジェクト型であるmrb_value型を渡すと、void*のポインタが返ってくる。ここにオリジナルの構造体や値のポインタを入れれば良い。shared_ptr<T>のオブジェクトをRuby側にもたせようとする方法は2つ思いつく。shared_ptr<T>#get()で生ポに変換して格納する。いずれの場合もshared_ptr<T>の参照カウントは無効になる。格納する以上諦めるしかない。)1.の場合はハマる確率がかなり高い。shared_ptr自体のオブジェクトを関数内で生成するタイプならば、その関数を抜けた時点で、格納したオブジェクトは無効になる。次に使おうとしたときに、アクセス違反になる。C言語をやっていれば当たり前のことではあるが。2.場合は格納は問題ないが、次にC++の世界に戻ってきたときに困る。オブジェクトを作ってやる必要がある。等を作り、そのインデックスを指してやる。ハッシュ関数も必要なので作ってやる。}なお、そもそも設計がマズいかもしれない。Lua等でもおこるはず。いい方法があったら教えてください。最新記事ワンコマンドでmrubyをブラウザで実行できるgemつくった地震情報を取得する無料のAPIってないのかな。月別アーカイブはてなブログをはじめよう!nrtnさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。