- 締切済み
左側がクラス、構造体、共用体、ジェネリック型への
VS2008 でVC++のコンパイルをしたときに、 「error C2227: '->SetValueXyzwpr2' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。」のエラーがでました。ネット上で、このエラーを探すと、GetValueXyzwprが定義していないとありますが、同じソース上の違う関数の中で使っているところではエラーがでません。今回新たに記述したところで発生しています。 【ソース】frrjiftestDlg.cpp void CFrrjiftestDlg::PrintFrameOfData(FILE *handle, sFrameOfData *FrameOfData) pSysVarPos->SetValueXyzwpr2(X,Y,Z,W,P,R,E1,E2,E3,C1,C2,C3,C4,C5,C6,C7,UF,UT); ←ここでエラーがでます。 同じ、cpp 上で、 void CFrrjiftestDlg::OnButtonSetSysvar() ←ここの中でも同じ使い方をしていますが、こちらではエラーはでません。 まったく、理由が分からず困り果てています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
> _DataSysVarPos *pSysVarPos; では、_DataSysVarPosの定義は? typedefとか#defineとかだったら、更にその元を辿って、「クラス、構造体、共用体、ジェネリック型」になってるか確認してください。 あとは ・そのエラーの前後に別のエラーは出てませんか? ・警告のレベルはどうなってますか? レベルを上げたら警告が増えると思いますが、そのエラー周辺や、_DataSysVarPos,pSysVarPosなどでなにか出てませんか?
- kmee
- ベストアンサー率55% (1857/3366)
> GetValueXyzwprが定義していない ではなくて、「左側(つまり「pSysVarPos」)がクラス、構造体、共用体、ジェネリック型へのポインタではありません」 というエラーです。 pSysVarPosの宣言はどうなっていますか?
補足
pSysVarPos は、インクルードしている先で定義しています。 // frrjiftestDlg.cpp : implementation file #include "frrjiftestDlg.h" ← このヘッダファイルの中で定義している。 // frrjiftestDlg.h : header file _DataSysVarPos *pSysVarPos; ← ここで定義 このヘッダファイルは、他プログラムからコピペしたままの状態なので、定義はあっているはずなのです。
補足
ヘッダーファイルのクラス定義のところで、static void をvoid に変更したら、コンパイルが通りました。 class CFrrjiftestDlg : public CDialog { static void PrintFrameOfData(FILE *handle, sFrameOfData *FrameOfData); ~~~~~~このstatic をとったら、OKとなりました。 みなさん、ご協力ありがとうございました