プロが教えるわが家の防犯対策術!

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()  ←ここの中でも同じ使い方をしていますが、こちらではエラーはでません。

まったく、理由が分からず困り果てています。

A 回答 (2件)

> _DataSysVarPos *pSysVarPos;



では、_DataSysVarPosの定義は?
typedefとか#defineとかだったら、更にその元を辿って、「クラス、構造体、共用体、ジェネリック型」になってるか確認してください。

あとは
・そのエラーの前後に別のエラーは出てませんか?
・警告のレベルはどうなってますか?
レベルを上げたら警告が増えると思いますが、そのエラー周辺や、_DataSysVarPos,pSysVarPosなどでなにか出てませんか?

この回答への補足

ヘッダーファイルのクラス定義のところで、static void をvoid に変更したら、コンパイルが通りました。

class CFrrjiftestDlg : public CDialog
{
static void PrintFrameOfData(FILE *handle, sFrameOfData *FrameOfData);
~~~~~~このstatic をとったら、OKとなりました。

みなさん、ご協力ありがとうございました

補足日時:2011/07/13 23:06
    • good
    • 0

> GetValueXyzwprが定義していない



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

pSysVarPosの宣言はどうなっていますか?

この回答への補足

pSysVarPos は、インクルードしている先で定義しています。

// frrjiftestDlg.cpp : implementation file
#include "frrjiftestDlg.h"  ← このヘッダファイルの中で定義している。

// frrjiftestDlg.h : header file
_DataSysVarPos *pSysVarPos; ← ここで定義

このヘッダファイルは、他プログラムからコピペしたままの状態なので、定義はあっているはずなのです。

補足日時:2011/07/11 20:29
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています