性格いい人が優勝

Visual C++ 2005 Express Editionで以下のコードを書くと

Run-Time Check Failure #3 - The variable 'pszReturnString' is being used without being defined.
ハンドルされていない例外が発生しました: 0xC0000005:
場所 0xcccccccc に書き込み中にアクセス違反が発生しました。

と出ます。
デバッグ時lpstReturnStringの部分には

CXX0030: エラーです: 式を評価できません

となっています。引数の型が違っているのでしょうか?原因が分からず困っています・・・。

-----------------
~クラス宣言(省略)~

Music::Music(std::string fn) : FileName(fn){}
PTSTR Music::play() {
PTSTR pszReturnString;
std::string str = "open " + FileName + " test";
mciSendString((PCTSTR)str.c_str(), pszReturnString, 125, 0);
return pszReturnString;
}

int WINAPI WinMain(・・・)
{
std::string str = "C:\\test.mp3";
Music test(str);
test.play();
}

A 回答 (2件)

mciSendString((PCTSTR)str.c_str(), pszReturnString, 125, 0);の


第二パラメータは何を渡すのかご存知でしょうか
そして、関数は第二パラメータに何をしてくるのかを理解すれば
どうすればよいのか分かるかと思います
ポインタの扱い方が間違っていますよ
ためしにNULLとしてみてください。
これだけ教えてもC++をする限りついて回る問題です
ご自分で理解してみてください。
    • good
    • 0
この回答へのお礼

NULLとするとエラーは出ないのですが、後々使うかも知れないので質問しました。
もう一度勉強しなおします。ありがとうございました。

お礼日時:2007/06/26 10:34

PTSTR pszReturnString;はポインタ宣言ですので


mciSendString((PCTSTR)str.c_str(), pszReturnString, 125, 0);
pszReturnStringを渡しても実態のある文字列格納アドレスは
わたりません。

この回答への補足

ありがとうございます。
具体的にどうすれば良いでしょうか?ポインタを戻すには*を付ければよかったと記憶しているのですが、上手くいきませんでした。

補足日時:2007/06/23 22:44
    • good
    • 0

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