• 締切済み

左側がクラス、構造体、共用体、ジェネリック型への

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()  ←ここの中でも同じ使い方をしていますが、こちらではエラーはでません。 まったく、理由が分からず困り果てています。

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> _DataSysVarPos *pSysVarPos; では、_DataSysVarPosの定義は? typedefとか#defineとかだったら、更にその元を辿って、「クラス、構造体、共用体、ジェネリック型」になってるか確認してください。 あとは ・そのエラーの前後に別のエラーは出てませんか? ・警告のレベルはどうなってますか? レベルを上げたら警告が増えると思いますが、そのエラー周辺や、_DataSysVarPos,pSysVarPosなどでなにか出てませんか?

ichigo61
質問者

補足

ヘッダーファイルのクラス定義のところで、static void をvoid に変更したら、コンパイルが通りました。 class CFrrjiftestDlg : public CDialog { static void PrintFrameOfData(FILE *handle, sFrameOfData *FrameOfData); ~~~~~~このstatic をとったら、OKとなりました。 みなさん、ご協力ありがとうございました

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> GetValueXyzwprが定義していない ではなくて、「左側(つまり「pSysVarPos」)がクラス、構造体、共用体、ジェネリック型へのポインタではありません」 というエラーです。 pSysVarPosの宣言はどうなっていますか?

ichigo61
質問者

補足

pSysVarPos は、インクルードしている先で定義しています。 // frrjiftestDlg.cpp : implementation file #include "frrjiftestDlg.h"  ← このヘッダファイルの中で定義している。 // frrjiftestDlg.h : header file _DataSysVarPos *pSysVarPos; ← ここで定義 このヘッダファイルは、他プログラムからコピペしたままの状態なので、定義はあっているはずなのです。

関連するQ&A