C・C++・C#
- 共用体、混合型はサポートされないというエラーがです
Microsoft VS2022でVC++を開発していたところ 下記①,②,③で"共用体名"をマネージ”プロジェクト名::MyForm” のメンバーとして定義できません。混合型はサポートされていませんというエラー(C4368)が発生します。対処法を教えてもらえないでしょうか(Microsoft VS2022) <MyForm.h> .. namespace プロジェクト名 {.. union AB { short int a_1; short int a_2; } .. .. class { union AB u_1;① union AB u_2;② union AB u_3;③ Myform_Load { } Myform_Paint { } }; }
- プログラミング言語C++のエラー
#include <iostream> #include <string> using namespace std; template <typename T> T max(T n1, T n2) { if(n1 > n2) { return n1; } return n2; } int main(){ cout << max<int>(1,2) << endl; cout << max<double>(1.75,3.12) << endl; string s1 = "aiu",s2 = "eo"; cout << max<string>(s1,s2) << endl; return 0; } このコードを入力すると、添付写真のようなエラーが出ます。使用しているのはmacOSのVisual Studio codeです。明らかにいじってはいけない場所のファイル /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__algorithm/max.h (添付写真のエラー表示下部のパス)が勝手に参照され、引数が一致してしまっているオーバーロードした関数となってしまいます。maxをMaxなどとすると問題は解決するのですが、既存のコードを編集する際、いちいちmaxでエラーが出ると不便です。 ちなみにテンプレートではなく、引数ごとに関数を作ればエラーは出ません。 解決方法を知っている方が居れば教えてほしいです。
- ベストアンサー
- C・C++・C#
- asitanoyozora
- 回答数2
- Bindingsource.Sortが効かない
visualstudioでC#を使用しています。 DataGridViewのDataSourceにBindingSourceを使用し、BindingSource.Sortで並び替えを実施しようとしています。 BindingSourceのListやDataGridViewのDataSource.Listを見てみるとソートされているのですが画面には反映されません。。。 BindingSourceのソート関連のプロパティはすべてtrueになっています。 画面の描画に使用しているのはListではないのでしょうか?また、ソートを無効にしてしまうプロパティ等があるのでしょうか? 教えて下さい!お願いします!!
- ベストアンサー
- C・C++・C#
- sachi-_-TK
- 回答数2
- C言語 ファイル処理に関する事
テキストエディタで打ち込んだファイル 【hw.dat】 Akiba 160 59.3 Kurata 162 51.6 Masaki 182 76.5 Tanaka 170 60.7 Tsuji 175 83.9 Washio 175 72.5 名前・身長・体重のデータです。 <問> 「hw.dat」から読み込んだデータを身長順にソートした上で 表示するプログラムを作成せよ。 下記のプログラムでは実行結果が何も出てきません。 入門レベルのスキルしかありません。何処が良くないのでしょうか。 教えて下さい。 [プログラム] #include <stdio.h> #include <string.h> void swap_double(double *x, double *y) { int temp = *x; *x = *y; *y = temp; } void swap_name(char *sx, char *sy) { char *temp; strcpy(temp, sx); strcpy(sx, sy); strcpy(sy, temp); } void sort(double *he, double *we, int n) { int i, j; for(i = 0; i < n - 1; i++){ if(*(he - 1) > *he ){ swap_double((he - 1), he); swap_double((we - 1), we); } } } void sort_name(double *he, char *na, int n) { int i, j; for(i = 0; i < n - 1; i++){ if(*(he - 1) > *he ){ swap_name((na - 1), na); } } } int main(void) { FILE *fp; int ninzu = 0; char *name[100]; double height, weight; double hsum = 0.0; double wsum = 0.0; int i; char *na[i]; double he[6]; double we[6]; if ((fp = fopen("hw.dat", "r")) == NULL) printf("\aファイルをオープンできません。\n"); else{ for(i = 0; i < 6; i++){ while (fscanf(fp, "%s%lf%lf", name , &height , &weight) != EOF ){ *na = *name; he[i] = height; we[i] = weight; ninzu++; hsum += he[i]; wsum += we[i]; printf("%-10s %5.1f %5.1f\n", na, height, weight); } } printf("------------------------\n"); printf("平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu); } puts("\n身長順にソートしました。"); for(i = 0; i < 6; i++){ *na = *name; he[i] = height; we[i] = weight; ninzu++; hsum += he[i]; wsum += we[i]; } for(i = 0; i < 6; i++){ sort(he, we, 6); sort_name(he, *na, 6); printf("%-10s %5.1f %5.1f\n", *(na + i) , *(he + i), *(we + i)); } printf("------------------------\n"); printf("平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu); fclose(fp); return 0; }
- 締切済み
- C・C++・C#
- t-tanaka102
- 回答数4
- C# もっとスマートな書き方教えてください
Chartコントロールを置き、凡例(Series)を6つ設定しています。 一例ですが、こんなふうに書いてるんですが、ループで回すなどもっと良い書き方無いでしょうか? Series SE1 = new Series(); Series SE2 = new Series(); Series SE3 = new Series(); Series SE4 = new Series(); Series SE5 = new Series(); Series SE6 = new Series(); SE1.ChartType = SeriesChartType.Line; SE2.ChartType = SeriesChartType.Line; SE3.ChartType = SeriesChartType.Line; SE4.ChartType = SeriesChartType.Line; SE5.ChartType = SeriesChartType.Line; SE6.ChartType = SeriesChartType.Line; SE1.MarkerStyle = MarkerStyle.Circle; SE2.MarkerStyle = MarkerStyle.Circle; SE3.MarkerStyle = MarkerStyle.Circle; SE4.MarkerStyle = MarkerStyle.Circle; SE5.MarkerStyle = MarkerStyle.Circle; SE6.MarkerStyle = MarkerStyle.Circle; ・ ・ ・
- ベストアンサー
- C・C++・C#
- nandemoii1234
- 回答数2
- C言語
次のプログラムは、自然数を入力して,その約数を表示するものである。ブログラム中の0 ~に適するものを答えなさい。ただし,a%bはaをbで割ったときの会りを求める演算 である。 参考 約数とは、入カした自然数に対して,その数を割り切ることのできる整数である。 例えば、6の約数は、1, 2, 3,6となる。 #include <stdio.h> int main (void) int i, num; printf("自然数を入カしてください。"): scanf ("%d", &num); printf("%dの約数は", num) ; for (i =@;i <= num; i++) ( if (num % i @ 0) { printf ("%d,i@1): printf("です。 ¥n"): return 0; 9 この問題の@の部分に入る数字、記号を教えて欲しいのとなぜそうなるのかも教えていただきたいです(-。-;
- ベストアンサー
- C・C++・C#
- ririto06060606
- 回答数2
- C言語について
int a, b; b=3; for (a=4; a>=1; a- -){ b=b+a; printf(“a=%d b=%d¥n”,a,b); } return 0; } すみません最初は省いてしまったのですがこのプログラムの a=3 の時の b をどう出すのか教えていただきたいです(~_~;)
- ベストアンサー
- C・C++・C#
- ririto06060606
- 回答数3
- 情報技術検定 C言語について
C言語で使う英語や記号の意味、使い道をそれぞれ教えていただきたいです(>人<;) %d &age⇦&単体なのかも知れません(-。-; sum else tmp scan f == print f num if
- 締切済み
- C・C++・C#
- ririto06060606
- 回答数3
- C言語系統に#(0){ コード } という機能
パワードール4というレトロゲームを購入しました。 ディスクにソース(.C)らしきファイルが入っており読んでみるとどうも各ステージなどで使う処理やエラーメッセージや会話を定数ではなくハードコーディング(ある程度?)しているようです。 各ステージごとに.cファイルを作っているようです。(メンテナンス性はよくなくとも、ステージが量より質、少人数開発とかだとこういう作り方も良いかも) それで本題ですがC言語系統に #(0){ コード } #(1010){ コード } #(2000){ コード } というようにソース内を#で区切るような機能はあるのでしょうか? ※これらは.cファイルのなかにいくつも入っています。#(2000){などの中の部分は処理が入っています。 私は発見できなかったので特定の環境ローカルなものですか? C系統ですと処理の単位は関数かクラスメソッドになり例えば func_rect(){ } のようなものになるのではないでしょうか? #()という記載が分からなかったので最初はgotoかなにかか、それともこのファイルはビルドして処理を行っているのではなく実行ファイルが読み込んで解釈をする定数か?と思ってしまいました。
- ベストアンサー
- C・C++・C#
- noname#259390
- 回答数2
- System::drawing内のColor構造体
System::drawing内のColor構造体が読めず、ColorがC2061構文エラー:識別子となってしまいます。using nameplaseにはSystem::drawingがあります。プロジェクトの参照にもSystem::drawingがあります。対処法を教えていただけないでしょうか
- LVGLで作った描画プログラムが動かない。
現在、ESP32基板にili9488というTFT部品を接続して、タッチ操作ができる画面プログラムをLVGLライブラリで作成しています。 hello world表示や、ボタンを表示したりすることはLVGLライブラリを使用して動作することは確認できましたが、ボタンをタッチする操作ができないようで、反応がありません。 Chat gptで画面をなぞると線を描画してくれるようなプログラムを作ってもらったのですが、画面をなぞっても描画できません。 この場合、タッチ機能が停止してしまっていますでしょうか? LVGLでタッチ操作ではなにか特別な設定などが必要でしょうか? なお、TFT_eSPIライブラリのみで作成した画面タッチプログラムでは、タッチ操作は正常にできています。 どうぞ、ご教示の程よろしくお願い致します。 (プログラム内容) #include <Arduino.h> #include <lvgl.h> #include <TFT_eSPI.h> // ILI9488ドライバを含むライブラリ void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); // ILI9488用のflush関数 TFT_eSPI tft = TFT_eSPI(); // TFTインスタンスを作成 // タッチイベントハンドラ static void touch_event_handler(lv_event_t *e) { lv_obj_t *obj = lv_event_get_target(e); lv_indev_t *indev = lv_indev_get_act(); lv_point_t point; lv_indev_get_point(indev, &point); // タッチされた位置に円を描画 lv_draw_rect_dsc_t rect_dsc; lv_draw_rect_dsc_init(&rect_dsc); rect_dsc.bg_color = lv_color_make(0xFF, 0x00, 0x00); // 赤色 lv_area_t area; area.x1 = point.x - 5; area.y1 = point.y - 5; area.x2 = point.x + 5; area.y2 = point.y + 5; lv_canvas_draw_rect(obj, area.x1, area.y1, lv_area_get_width(&area), lv_area_get_height(&area), &rect_dsc); } void setup() { lv_init(); tft.begin(); tft.setRotation(1); lv_disp_draw_buf_t draw_buf; static lv_color_t buf[TFT_WIDTH * 10]; // 描画バッファを定義 lv_disp_draw_buf_init(&draw_buf, buf, NULL, TFT_WIDTH * 10); // ディスプレイドライバを設定 static lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); disp_drv.hor_res = TFT_WIDTH; disp_drv.ver_res = TFT_HEIGHT; disp_drv.flush_cb = my_disp_flush; // ここでILI9488用のflush関数を設定 disp_drv.draw_buf = &draw_buf; lv_disp_drv_register(&disp_drv); // キャンバスを作成 lv_obj_t *canvas = lv_canvas_create(lv_scr_act()); lv_obj_add_event_cb(canvas, touch_event_handler, LV_EVENT_PRESSED, NULL); } void loop() { lv_timer_handler(); // LVGLタイマーを処理 delay(5); } // ILI9488用のflush関数(ディスプレイドライバの設定に必要) void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) { uint32_t w = (area->x2 - area->x1 + 1); uint32_t h = (area->y2 - area->y1 + 1); tft.startWrite(); tft.setAddrWindow(area->x1, area->y1, w, h); tft.pushColors((uint16_t *)&color_p->full, w * h, true); tft.endWrite(); lv_disp_flush_ready(disp); }
- WINAPI editbox内の文字が文字化けする
プログラムは、ウィンドウ内にエディットボックスを表示するだけのものです。 下のプログラムを実行すると、エディットボックス内に ”繧ィ” と表示されます。また、“エディタ“ と入力すると ”ィ」ソ” と表示されます。 GetWindowTextでテキストを取得すると、MessageBoxには何も表示 されませんでした。 使用しているパソコンはwindows10です。 どうすれば文字化けが解消されるのでしょうか。 #include <stdio.h> #include <windows.h> HINSTANCE hinstance; TCHAR tch[128]; LRESULT CALLBACK winpr(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE hinst,HINSTANCE hprevinst, LPSTR lpcmdline,int ncmdshow) { TCHAR szwinClass[]=TEXT("samp1"); TCHAR sztitle[]=TEXT("サンプル"); int width=720; int height=720; WNDCLASSEX wcx; HWND hwnd; MSG msg; hinstance=hinst; wcx.cbSize=sizeof(WNDCLASSEX); wcx.style=CS_HREDRAW | CS_VREDRAW; wcx.hbrBackground=(HBRUSH)(COLOR_WINDOWTEXT+1); wcx.cbClsExtra=0; wcx.cbWndExtra=0; wcx.hIcon=NULL; wcx.hIconSm=NULL; wcx.hCursor=LoadCursor(NULL,IDC_ARROW); wcx.hInstance=hinstance; wcx.lpfnWndProc=winpr; wcx.lpszClassName=szwinClass; wcx.lpszMenuName=sztitle; if(!RegisterClassEx(&wcx)){ MessageBox(NULL,TEXT("failed"),TEXT("fail"),MB_OK); return 1; } hwnd=CreateWindowEx(WS_EX_CLIENTEDGE,szwinClass,sztitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, width,height, NULL,NULL,hinstance,NULL); if (!hwnd) { MessageBox(NULL,TEXT("failed"),TEXT("fail"),MB_OKCANCEL); int err=GetLastError(); return 1; } ShowWindow(hwnd,ncmdshow); UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0)>0){ TranslateMessage(&msg); DispatchMessage(&msg); } } LRESULT CALLBACK winpr(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam){ HDC hdc; HWND hwndedit; int id; switch(message){ case(WM_CREATE): hwndedit= CreateWindow( TEXT("edit"), TEXT("エディタ"), WS_CHILD | WS_VISIBLE , 10, 10, 200, 30, hwnd, (HMENU)1,hinstance, NULL); return 0; case(WM_CLOSE): GetWindowText(hwndedit,tch,GetWindowTextLength(hwndedit) + 1); MessageBox(hwnd,tch,TEXT("文字化け"),MB_OK); id= MessageBox(hwnd,TEXT("閉じる"),TEXT("閉じる"), MB_OKCANCEL); if (id==IDOK){ DestroyWindow(hwnd); } return 0; case(WM_DESTROY): PostQuitMessage(0); return 0; default: return DefWindowProc(hwnd,message,wparam,lparam); } }
- OpenGLについて
OpenGLで、球を平面上で滑らかに転がすにはどうすればいいでしょうか?また、球が平面の上に置かれていて特定のコマンドで平面が傾き球が転がる、という動作を可能にするにはどうすればいいでしょうか?どなたかご教示お願いします
- 締切済み
- C・C++・C#
- pepeha9181243
- 回答数1