プロが教える店舗&オフィスのセキュリティ対策術

int m_nTypeCounter=0;
と定義した変数を使い
if((pDoc->m_sRomaji).GetAt(&m_nTypeCounter)==m_sStr)
{
m_sAnser += m_sStr;
m_nTypeCounter++;
}
とした際、コンパイルエラーが
『C:\project\2008年課題\コピー ~ 問題・時計領域のみ再描画tokeidouga\ProgramView.cpp(536) : error C2664: 'GetAt' : 1 番目の引数を 'int *' から 'int' に変換できません。 (新しい機能 ; ヘルプを参照)』
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。』
と表示されます。
どうしたら良いのでしょうか。
よろしくお願いします。

A 回答 (3件)

環境がわかりませんが、MFCのCString::GetAt()がエラーになっているのですか?


m_sRomajiがCStringならば、GetAtは指定した位置のTCHARを取得する関数(戻り値TCHAR)になります。
比較対象をm_sStrではなく、m_sStr[0]やm_sStr[1]のようにTCHARの値と比較すれば、エラーはなくなると思います。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます。
環境について、書き忘れてしまいました。でも、ご推察の通り、です。早速CStringにしてみたいと思います。
ありがとうございました。

お礼日時:2008/08/20 15:47

その「& を外した」ときに出る「別のコンパイルエラー」とはどのようなものでしょうか?

この回答への補足

ご解答ありがとうございます。
&を外すと

『C:\project\2008年課題\コピー ~ 問題・時計領域のみ再描画tokeidouga\ProgramView.cpp(537) : error C2446: '==' : 'char *' 型から 'int' 型への変換ができません。
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
C:\project\2008年課題\コピー ~ 問題・時計領域のみ再描画tokeidouga\ProgramView.cpp(537) : error C2040: '==' : 'int' は 'char [2]' と間接操作のレベルが異なります。
cl.exe の実行エラー』

と表示されてしまいます。
ちなみに、m_strは
『char m_sStr[2];』
と定義しています。

補足日時:2008/08/20 15:21
    • good
    • 0
この回答へのお礼

すみません。自分で補足を書きながら、自分の間違いに気付きました。
m_sStrがcharだから対応できないんですね。
CStringにしてみましたところ、エラーは解消されました。ありがとうございます。

お礼日時:2008/08/20 15:47

>1 番目の引数を 'int *' から 'int' に変換できません。


こう言われてるんだからそれに適合するように変更したら良いよ

宿題みたいだから教えると違反だから教えてあげられないのでヒントだけ↑にかいといた

この回答への補足

確かにプログラムの名称に課題が入っていますが、タイピングゲームを独自で作ってみようと思って、勝手に課題を作ってやっているだけなので、宿題というわけではないんです。紛らわしくて申し訳ございません。
ご心配いただきありがとうございます。

実は、コンパイルエラーの内容がいまいちわからないんです。
自分なりに読み解くと、int*からintとm_nTypeCounterがポインタだから、&を外せばいいのかな?とも思ったのですが、&を外すと、今度は、別のコンパイルエラーが出てしまうのです。

ヒントだけではなく、できれば、コンパイルが通る方法を教えていただければと思います。よろしくお願いします。

補足日時:2008/08/20 15:01
    • good
    • 0

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