• ベストアンサー

コンパイルエラー

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 スタイル キャストまたは関数スタイルのキャストが必要です。』 と表示されます。 どうしたら良いのでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • penta1331
  • ベストアンサー率64% (16/25)
回答No.3

環境がわかりませんが、MFCのCString::GetAt()がエラーになっているのですか? m_sRomajiがCStringならば、GetAtは指定した位置のTCHARを取得する関数(戻り値TCHAR)になります。 比較対象をm_sStrではなく、m_sStr[0]やm_sStr[1]のようにTCHARの値と比較すれば、エラーはなくなると思います。

nanami_wic
質問者

お礼

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

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

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

nanami_wic
質問者

お礼

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

nanami_wic
質問者

補足

ご解答ありがとうございます。 &を外すと 『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];』 と定義しています。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

>1 番目の引数を 'int *' から 'int' に変換できません。 こう言われてるんだからそれに適合するように変更したら良いよ 宿題みたいだから教えると違反だから教えてあげられないのでヒントだけ↑にかいといた

nanami_wic
質問者

補足

確かにプログラムの名称に課題が入っていますが、タイピングゲームを独自で作ってみようと思って、勝手に課題を作ってやっているだけなので、宿題というわけではないんです。紛らわしくて申し訳ございません。 ご心配いただきありがとうございます。 実は、コンパイルエラーの内容がいまいちわからないんです。 自分なりに読み解くと、int*からintとm_nTypeCounterがポインタだから、&を外せばいいのかな?とも思ったのですが、&を外すと、今度は、別のコンパイルエラーが出てしまうのです。 ヒントだけではなく、できれば、コンパイルが通る方法を教えていただければと思います。よろしくお願いします。

関連するQ&A

  • SDKでのエラーなのですが。

    はじめまして。 SDKの勉強で猫でもわかる~のHPの第37章のサンプルを実行したのですが、 --------------------構成: 037 - Win32 Debug-------------------- コンパイル中... main.cpp D:\SDK\037\main.cpp(230) : error C2664: 'CallWindowProcA' : 1 番目の引数を 'int (__stdcall *)(void)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 D:\SDK\037\main.cpp(248) : error C2664: 'CallWindowProcA' : 1 番目の引数を 'int (__stdcall *)(void)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 cl.exe の実行エラー 037.exe - エラー 2、警告 0 というようなエラーが出てしまいました。 このエラーを回避するにはどのようにすればいいのでしょうか?

  • コンパイルエラーが理解できません

    初心者ですお教えください。 下記ソースをMicrosoft eMbedded Visual C++ でコンパイルしましたがコンパイルエラーが出て 理解できませんどなたかお教えください。 STANDARDSDK Win32 (WCE x86)Debug STANDARDSDK Emulator -------------------------------------------------- #include "windows.h" int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SYSTEMTIME tm; char s[80]; int iRet; // 現在時刻を取得します。 GetLocalTime(&tm); // 表示する文字列を設定します。 if ((tm.wHour >= 0) && (tm.wHour < 12)) { lstrcpy(s, "おはです。"); } else if (tm.wHour < 17) { lstrcpy(s, "こんちは。"); } else { lstrcpy(s, "こんば。"); } // メッセージボックスに文字列を表示します。 iRet = MessageBox(NULL, s, "MsgBox", MB_OK); // 正常終了を意味する戻り値を返します。 return 0; } <コンパイルエラー内容です> プロジェクト 'MsgMain - Win32 (WCE x86) Debug' 用の中間ファイルおよび出力ファイルを削除しています。 --------------------構成 : MsgMain - Win32 (WCE x86) Debug-------------------- コンパイル中... MsgMain.cpp C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(7) : error C2731: 'WinMain' : function cannot be overloaded C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(3) : see declaration of 'WinMain' C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(17) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(19) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(21) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(25) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast cl.exe の実行エラー MsgMain.exe - エラー 5、警告 0 以上です宜しくお願いします。

  • VC++でコンパイルエラーが出ますがお教えください。

    初心者で申し訳なくおもいます。 下記のソースでコンパイルエラーが出ます。 // CnstDst.cpp : アプリケーション用のエントリ ポイントの定義 // #include "stdafx.h" //CnstDst クラス定義 class CnstDst { char sDat[80]; public: CnstDst(char *s); ~CnstDst(); }; CnstDst cd1("テストです"); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // TODO: この位置にコードを記述してください。 MessageBox(NULL, "WinMainの入口", "WinMain", MB_OK); CnstDst cd2("テスト1"); MessageBox(NULL, "テスト2", "WinMain", MB_OK); return 0; } CnstDst::CnstDst(char *s) { lstrcpy(sDat, s); MessageBox(NULL, sDat, "コンストラクタ", MB_OK); } CnstDst::~CnstDst() { MessageBox(NULL, sDat, "デストラクタ", MB_OK); } コンパパイルエラーは下記です。 プロジェクト 'CnstDst - Win32 (WCE MIPSII_FP) Debug' 用の中間ファイルおよび出力ファイルを削除しています。 --------------------構成 : CnstDst - Win32 (WCE MIPSII_FP) Debug-------------------- リソースをコンパイル中... コンパイル中... StdAfx.cpp コンパイル中... CnstDst.cpp C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(22) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [14]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(24) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [9]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(31) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(32) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(36) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast clmips.exe の実行エラー CnstDst.exe - エラー 5、警告 0 Microsoft eMbedded Visuai C++ Win32 WCE で行っております。

  • 意味がわからないエラーがあります【14歳からはじめるC言語ゲームプログラミング】

    14歳からはじめるC言語ゲームプログラミング(横スクロールアクションゲーム)をやっていて、第5章で意味がわからないエラーがでました・・・ error C2664: 'MessageBoxW' : 2 番目の引数を 'const char [25]' から 'LPCWSTR' に変換できません。 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 というもので、chap4.cppの23行目と67行目でひっかかりました。 どうすれば解決できますでしょうか。 C言語に詳しい方、よろしくおねがいします。

  • Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express Editionでerror C2664発生

    お世話になります。 Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express EditionでエラーC2664を出してしまい解決法を模索しております。 同様のトラブルを調べてみましたが、例えば「文字セット」を「マルチ バイト文字セットを使用する」にしても改善されませんでした。 void time_sobi(int sobi_time){ long time1,time2 ; time(&time1); time2=time1; while(labs(time1-time2)<sobi_time){ time(&time1); } } 上述の部分で: s\jun\デスクトップ\hight\hight.cpp(112) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>c:\documents and settings\jun\デスクトップ\hight\hight.cpp(115) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 とメッセージが出て、該当する部分はそれぞれ3,6行目のtime(&time1);です。 ご教示くださる方いらっしゃいましたら宜しくお願い致します。

  • error C2664

    現在VisualStudio C++ 6.0にてプログラムを組んでいるのですが、以下のようなエラーが出ます。 型の変換ができていないであろうことはわかるのですが、解決方法がわかりません。 どのような解決方法があるのでしょうか? よろしくお願いします。 error C2664: 'strcat' : 1 番目の引数を 'unsigned char [256]' から 'char *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。

  • VC++2008のC2664エラー

    VisualStdio2008で、現在手を出しているARToolKitを利用したプログラムです。 卒研に使うもので以前別の方が作ったプログラムなのですが、C2664というエラーが発生し、その解決方法がよくわからないので質問します。 以下が、該当する部分のソースです。また、エラーの文章もそのままあげています。 左に書いてあるのは行数です。 「*cparam」が「char **からARParam *へ変換できない」と言うものなのですがどうすれば解決できるでしょうか。 一応、いくつかのサイトも見てみましたがよくわからなかったので質問しました。 解決方法を教えてくださるとありがたいです。 int xsize; int ysize; char *vconf = "Data/WDM_camera_flipV.xml"; //ビデオデバイスの設定ファイル char *cparam = "Data/camera_para.dat"; //カメラパラメータファイル //初期化関数 static void init(void) { ARParam wparam; int i; /*ビデオデバイス設定*/ if(arVideoOpen(vconf) < 0) exit(0); /*ウィンドウサイズ取得*/ if(arVideoInqSize(&xsize,&ysize) < 0) exit(0); printf("Image size(x,y) = (%d,%d)\n",xsize,ysize); /*カメラパラメータ読み込み*/ if (arParamLoad(cparam,1,&wparam) < 0){ printf("Camera parameter load error !!\n"); exit(0); } /*カメラパラメータ初期化*/ 95 arParamChangeSize(&wparam,xsize,ysize,&cparam); 96 arInitCparam(&cparam); 97 printf("*** Camera Parameter ***\n"); 98 arParamDisp(&cparam); /*パターンファイル読み込み*/ for (i = 0; i < OBJ_NUM; i++){ if( (object[i].patt_id = arLoadPatt(object[i].patt)) < 0){ printf("pattern load error : %s\n", object[i].patt); exit(0); } } /*gsubライブラリ初期化*/ 109 argInit(&cparam, 1.0, 0, 2, 1, 0); mqoInit(); } 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(95) : error C2664: 'arParamChangeSize' : 4 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(96) : error C2664: 'arInitCparam' : 1 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(98) : error C2664: 'arParamDisp' : 1 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(109) : error C2664: 'argInit' : 1 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

  • エラー C2664

    プログラミングの初心者です. 「error C2664: 'fclose' : 1 番目の引数を 'const char [14]' から 'FILE *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。」 以上のエラー文がでてきて, http://tipstips.client.jp/ugopen/UfuncErrorW32.html ↑の操作をしても消えませんでした. エラー文の出てきたのは fclose("sikisaizu.csv"); というところです. よければヒント等を教えていただけると嬉しく思います. よろしくお願い致します.

  • Visual C++のサンプルプログラムを入力時

    Visual C++のサンプルプログラム(CD付属ソースから)を入力・コンパイル時のエラー すみません、教えてgoo初心者なもので、返信感覚で回答者にお礼を書いていたら再質問の順序等訳がわからなくなってしまったので新規に質問します。 前回質問:http://okwave.jp/qa/q6315455.html 猫でもわかるゲームプログラミングhttp://www.kumei.ne.jp/c_lang/index.htmlという本で勉強しようとしています。 本の巻末に書いてある通り、プロジェクトを新規作成でWindowsアプリケーション、空のプロジェクトで始め、サンプルのソースをコピー&ペーストで貼り付けたんですが、 1>new1.cpp 1>c:\documents and settings\REI\my documents\visual studio 2008\projects\new1\new1\new1.cpp(58) : error C2440: '=' : 'LPCSTR' から 'LPCWSTR' に変換できません。 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>c:\documents and settings\REI\my documents\visual studio 2008\projects\new1\new1\new1.cpp(85) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [6]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>ビルドログは "file://c:\Documents and Settings\REI\My Documents\Visual Studio 2008\Projects\new1\new1\Debug\BuildLog.htm" に保存されました。 1>new1 - エラー 2、警告 0 となります。すみません、ソースは文字数の関係でUPできないのですが、 これでは苦労してプログラム入力したとしても悉く実行できないってことですよね。 どなたか分かる方いましたらご回答ください。

  • 構造体自体をポインターに入れたい

    構造体自体をポインターに入れて、ポーンターから位置をずらして表示したいものを表示したいのですが、どのようにすればよろしいでしょうか? 現在下記のように書いていますがコンパイルエラーになります static struct{  char *name; //名前  int num; //数 }eat1[5] = {  { "もも" , 1 },  { "みかん" , 2 }, }; static struct{  char *name; //名前  int num; //数 }eat2[5] = {  { "きゅうり" , 1 },  { "ナス" , 2 }, };  int *p;  int mode = 2;  int i;  switch( mode ){   case 1: p = &eat1;   case 2: p = &eat2;  }  for( i = 0; i < 5; i++; ){   printf( "%d\n" , p[i].num );  } エラー内容 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(303) : error C2440: '=' : '<unnamed-type-eat1> (*)[5]' から 'int *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(304) : error C2440: '=' : '<unnamed-type-eat2> (*)[5]' から 'int *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(307) : error C2059: 構文エラー : ';' c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(308) : error C2228: '.num' の左側はクラス、構造体、共用体でなければなりません 型は 'int' です。

専門家に質問してみよう