アプリ版:「スタンプのみでお礼する」機能のリリースについて

void*型をdoubleにキャストしたいのですが方法がわかりません。
何かインクルードなども必要でしょうか?

A 回答 (2件)

本当にdoubleですか?


本当にvoid * ですか?

void*はポインタでdoubleは数値です。
本来はキャストできるものではありません。


#1のエラー内容から
・Get??? が NULL を返している
・初期化されていない(どこを指しているのか不定な)ポインタを Get??? が返している
というあたりが予想されます。

デバッガを使ったり
void * p = get???() ;
printf("%p\n",p) ;
等して get??? がどんな値を返しているのか、確認してください。


あと、その Get??? のマニュアルに詳しく書いてないですか?
もし、公開されているライブラリなら、具体的にどのライブラリか教えていただけるとよいのですが。

例えば
Get???: get property value
とあって、その後に個別に
GetAAA: (説明)
GetBBB: (説明)
...
等とあるとか



doubleのビットパターンを、void * に入れて返している可能性も0ではないです。

この回答への補足

Autodesk MotionBuilder 2012 SDK Documentation

FBProperty というClassのGetValuePtr というメソッドです。
------------------------------
void* GetValuePtr ( ) const
Get property value.
-------------------------------
GetValuePtr の説明はこれだけです。


型はFBProperty のGetPropertyTypeName で調べました。
-------------------------------
char* GetPropertyTypeName ( )
Get the property's type name.
Returns:The property's type name.
-------------------------------
以上がGetPropertyTypeName の説明です。

const char* jpName[40];
const char* jpTypeName[40];
void * jpValue[40];

FBProperty* jp = joystick_PropertyList.operator[](i);// プロパティを取得
const char* jpName = jp->GetName(); // プロパティの名前を確認
    (ここは問題なく自分の意図した名前が得られています。)
const char* jpTypeName = jp->GetPropertyTypeName(); // プロパティのタイプ、型を取得
    (これがdoubleと返ってきます。double型であることに問題はありません。
     他のものでも自分が予想していた型が返ってきています。)

void* jpValue = jp->GetValuePtr(); // プロパティの値を取得
    (取得はできているようですが値を確認することができません。)

返ってくる値は 0x000000000000000000000 といった値が返ってきています。
この値に変化はありません。

あれからいろいろ試したところ

double value1 = *(double *)&jpValue

で処理は通ったのですが、値が 0.000000 しか返ってきませんでした。
モーションビルダー上では数値は入っているはずです。

補足日時:2014/08/25 11:44
    • good
    • 0

多分以下の質問の続きなのでしょうが、


http://oshiete.goo.ne.jp/qa/8725097.html
だとしたら
 double value = *(static_cast<double *>(Get???()));
で行けると思います。
……が、上記の前に上記関数で帰ってくるプロパティ値が本当に double か確認する必要があると思いますし、上記質問に記載の関数の説明を読むにプロパティが保持する値の型をチェックできる関数があるはずです。"Get property type." という感じのことが書いてある関数はありませんか?

この回答への補足

ありがとうございます。
値の型がdoubleであることは確認できています。

回答いただいた方法で試したのですが

【ハンドルされない例外が発生しました…読み取り中にアクセス違反が発生しました】

と出てきてその部分の処理が通りません。

補足日時:2014/08/22 12:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!