からなや さんが書きました:私の書いたやり方では「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」と出てきてエラーになってしまいます。
普通、エラーメッセージには、どのファイルの何行目のどの名前で
エラーになったと出るはずですが、コンパイラは何ですか?
恐らく、DataCheck.cpp の 6行目の DataSelect::Send(p); の部分で、
そのメッセージが出ているんだと思います。
DataSelect のインスタンス(オブジェクト)は、どこで生成していますか?
DataSelect dataSelect; という宣言があると、
dataSelect.Send(p); で Send が参照できます。
DataSelect *pDataSelect = new DataSelect; という宣言があると、
pDataSelect->Send(p); で Send が参照できます。
他にもおかしなところがあります。
未初期化の DataCheck::p を引数にしていいんですか?
DataSelect::Send() の中で、引数の p の値を無視し、
p = SaveData; で上書きしていますね。
[quote="からなや" id=3,19672,148348]私の書いたやり方では「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」と出てきてエラーになってしまいます。[/quote]
普通、エラーメッセージには、どのファイルの何行目のどの名前で
エラーになったと出るはずですが、コンパイラは何ですか?
恐らく、DataCheck.cpp の 6行目の DataSelect::Send(p); の部分で、
そのメッセージが出ているんだと思います。
DataSelect のインスタンス(オブジェクト)は、どこで生成していますか?
DataSelect dataSelect; という宣言があると、
dataSelect.Send(p); で Send が参照できます。
DataSelect *pDataSelect = new DataSelect; という宣言があると、
pDataSelect->Send(p); で Send が参照できます。
他にもおかしなところがあります。
未初期化の DataCheck::p を引数にしていいんですか?
DataSelect::Send() の中で、引数の p の値を無視し、
p = SaveData; で上書きしていますね。