エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.101【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1500329247/
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/11/04(土) 16:33:35.07ID:NYxCuvMY145デフォルトの名無しさん
2017/12/05(火) 11:54:34.95ID:GUcDlKUg >>142
whileでのfscanfのあとでiを変更してないから次のfscanfで同じda2[i]に上書きしてる
whileでのfscanfのあとでiを変更してないから次のfscanfで同じda2[i]に上書きしてる
146デフォルトの名無しさん
2017/12/05(火) 12:02:08.68ID:BooJAJ3p147デフォルトの名無しさん
2017/12/05(火) 15:40:18.03ID:BooJAJ3p 再びよろしくお願いいたします。
int main(){
char ch1,ch2;
printf("二文字入力\n");
scanf("%c",&ch1);
scanf("%c",&ch2);
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
これを実行すると、2回目のscanfを飛び越えてしまいます。
その理由と回避方法をご指南いただけませんでしょうか?
よろしくお願いいたします。
int main(){
char ch1,ch2;
printf("二文字入力\n");
scanf("%c",&ch1);
scanf("%c",&ch2);
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
これを実行すると、2回目のscanfを飛び越えてしまいます。
その理由と回避方法をご指南いただけませんでしょうか?
よろしくお願いいたします。
148片山博文MZ ◆T6xkBnTXz7B0
2017/12/05(火) 15:46:59.33ID:KBxdaLdg 再びよろしくお願いいたします。
int main(){
char buf[3], ch1,ch2;
printf("二文字入力\n");
fgets(buf, 3, stdin);
ch1 = buf[0];
ch2 = buf[1];
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
int main(){
char buf[3], ch1,ch2;
printf("二文字入力\n");
fgets(buf, 3, stdin);
ch1 = buf[0];
ch2 = buf[1];
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
149デフォルトの名無しさん
2017/12/05(火) 16:20:49.08ID:BooJAJ3p150デフォルトの名無しさん
2017/12/05(火) 16:50:17.51ID:VZfNuCLu151デフォルトの名無しさん
2017/12/05(火) 16:59:28.01ID:BooJAJ3p >>150
ありがとうございます
しっかり理解できるには時間がかかりますが
とりあえず、お礼申し上げます
改行文字を処理しないと次のscanfが改行文字を読んでしまうのですね
とても勉強になりますし、皆様のおかげで前進できます
ありがとうございます
ありがとうございます
しっかり理解できるには時間がかかりますが
とりあえず、お礼申し上げます
改行文字を処理しないと次のscanfが改行文字を読んでしまうのですね
とても勉強になりますし、皆様のおかげで前進できます
ありがとうございます
152デフォルトの名無しさん
2017/12/07(木) 00:17:29.58ID:fcKh4od9 皆すげーな
俺みたいなライブラリのインクルードが通せなくて
そもそもコンパイルって何だっけってところから調べるような奴には恐れ多いわ
俺みたいなライブラリのインクルードが通せなくて
そもそもコンパイルって何だっけってところから調べるような奴には恐れ多いわ
153デフォルトの名無しさん
2017/12/07(木) 12:53:50.82ID:4zvLzkC0 毎日すみません。ご教授お願いします。
out,txtに記録されている下記文字に対して
---------------
AAA BB
ababb
099
---------------
ファイルを開いて、文字列を読み出し
配列で一文字一文字を表示させようとしています
i=0;
fp=fopen("out.txt","r");
while(fscanf(fp,"%c",&c)!=EOF){
i++;
}
for(t=0;t<=i;t++){
printf("%c\n",c[t]);
}
これだと18行表示されますが
表示されたのは全く異なるものでした
どこが不適切なのか2日考えても分かりません
いつも申し訳ありません><よろしくご指導願います
out,txtに記録されている下記文字に対して
---------------
AAA BB
ababb
099
---------------
ファイルを開いて、文字列を読み出し
配列で一文字一文字を表示させようとしています
i=0;
fp=fopen("out.txt","r");
while(fscanf(fp,"%c",&c)!=EOF){
i++;
}
for(t=0;t<=i;t++){
printf("%c\n",c[t]);
}
これだと18行表示されますが
表示されたのは全く異なるものでした
どこが不適切なのか2日考えても分かりません
いつも申し訳ありません><よろしくご指導願います
154デフォルトの名無しさん
2017/12/07(木) 13:10:52.74ID:dicAL8ON >>153
c は大きさの十分ある char への配列と想定した前提で
fscanf の引数がおかしい
1文字毎に配列へ順繰りに読み込ますのなら
fscanf(fp,"%c", &c[i]);
こうなってないと
c は大きさの十分ある char への配列と想定した前提で
fscanf の引数がおかしい
1文字毎に配列へ順繰りに読み込ますのなら
fscanf(fp,"%c", &c[i]);
こうなってないと
155デフォルトの名無しさん
2017/12/07(木) 13:39:27.89ID:4zvLzkC0 >>154
&が抜けていたのは恥ずかしいです
申し訳ありませんでした
しっかり覚えさせていただきます
プログラムもちゃんと動きました
いつも簡単なことばかりなのに理解が浅くてすみません
とても勉強になりました。ありがとうございました
&が抜けていたのは恥ずかしいです
申し訳ありませんでした
しっかり覚えさせていただきます
プログラムもちゃんと動きました
いつも簡単なことばかりなのに理解が浅くてすみません
とても勉強になりました。ありがとうございました
156デフォルトの名無しさん
2017/12/07(木) 16:08:02.33ID:dicAL8ON 書いてあることが違うけど(&が抜けていたのではなく [i] がない)
本当に分かっているのか不安になる返答だが、そのうち慣れてくるだろう。
(文字と文字列の違いと (f)scanf に渡すフォーマットの指示と 変数をどう渡すか
の一連が整理されてないと、また繰り返すだろう)
本当に分かっているのか不安になる返答だが、そのうち慣れてくるだろう。
(文字と文字列の違いと (f)scanf に渡すフォーマットの指示と 変数をどう渡すか
の一連が整理されてないと、また繰り返すだろう)
157デフォルトの名無しさん
2017/12/07(木) 16:29:02.63ID:4zvLzkC0 >>156
はい、ありがとうございます。
配列にして直してあります。
fscanf(fp,"%s",c)として読み込んだ後に
c[i]で一文字一文字表示させられると思い込んでいました
先ほどの156のおかげでfscanf(**** &c[i])を覚えられました
ありがとうございます!感謝してます
はい、ありがとうございます。
配列にして直してあります。
fscanf(fp,"%s",c)として読み込んだ後に
c[i]で一文字一文字表示させられると思い込んでいました
先ほどの156のおかげでfscanf(**** &c[i])を覚えられました
ありがとうございます!感謝してます
158デフォルトの名無しさん
2017/12/08(金) 15:46:12.24ID:b0CgZ3o1 こんにちは。どうか本日もよろしくお願いいたします。
10人分の点数を入れて表示するプログラムです。
下記のように作成したのですが、main()内から関数を呼び出すところで
parameter names(without typesというエラーがでてしまいます。
どうかよろしくお願いします。
#include<stdio.h>
void da(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d input ",i);scanf("%d",&ten[i]);
}
return;
}
void out(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d人目 : %d点\n",i,ten[i]);
}
return;
}
int main(){
int ten[10];
void da(ten);
void out(ten);
return 0;
}
10人分の点数を入れて表示するプログラムです。
下記のように作成したのですが、main()内から関数を呼び出すところで
parameter names(without typesというエラーがでてしまいます。
どうかよろしくお願いします。
#include<stdio.h>
void da(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d input ",i);scanf("%d",&ten[i]);
}
return;
}
void out(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d人目 : %d点\n",i,ten[i]);
}
return;
}
int main(){
int ten[10];
void da(ten);
void out(ten);
return 0;
}
159片山博文MZ ◆T6xkBnTXz7B0
2017/12/08(金) 15:56:23.80ID:8LWGXCju >>158
#include <stdio.h>
void da(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d input ", i); scanf("%d",&ten[i]);
}
}
void out(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d人目 : %d点\n", i + 1, ten[i]);
}
}
int main(void) {
int ten[10];
da(ten);
out(ten);
return 0;
}
#include <stdio.h>
void da(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d input ", i); scanf("%d",&ten[i]);
}
}
void out(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d人目 : %d点\n", i + 1, ten[i]);
}
}
int main(void) {
int ten[10];
da(ten);
out(ten);
return 0;
}
160デフォルトの名無しさん
2017/12/08(金) 16:02:05.10ID:C0Y4l8FE そろそろうっとしいな
161デフォルトの名無しさん
2017/12/08(金) 16:06:39.52ID:b0CgZ3o1 すみません、ここは質問するところじゃなかったのですね
他のC言語のスレから誘導されたので、こちらで質問していいかと思ったのですが
今後質問は控えます。自力で学習を進めようと思います。
ご迷惑をおかけしてすみませんでした。
片山先生、本日もありがとうございました。感謝です。
他のC言語のスレから誘導されたので、こちらで質問していいかと思ったのですが
今後質問は控えます。自力で学習を進めようと思います。
ご迷惑をおかけしてすみませんでした。
片山先生、本日もありがとうございました。感謝です。
162デフォルトの名無しさん
2017/12/16(土) 05:14:03.17ID:Nra/Nglb #pragma pack(1)
struct {
char a;
short b;
int c;
} x;
Cでバイナリデータとかパディング除けに上のような感じに書いて読み書きしたりしますが(例は適当)、
C++ではpragmaを使用せず記述量も少ないスマートな記述方法はあるでしょうか?
struct {
char a;
short b;
int c;
} x;
Cでバイナリデータとかパディング除けに上のような感じに書いて読み書きしたりしますが(例は適当)、
C++ではpragmaを使用せず記述量も少ないスマートな記述方法はあるでしょうか?
163デフォルトの名無しさん
2017/12/16(土) 09:10:24.00ID:67ZudMHx ない
164デフォルトの名無しさん
2017/12/16(土) 09:52:53.87ID:Nra/Nglb ありがとうございます。やっぱりないですか。
pragmaがコンパイラ依存とか書かれてて非常に嫌なんですが慣れます。
pragmaがコンパイラ依存とか書かれてて非常に嫌なんですが慣れます。
165片山博文MZ ◆T6xkBnTXz7B0
2017/12/16(土) 16:18:44.15ID:2NfYNG63 #include <pshpack1.h>
...
#include <poppack.h>
...
#include <poppack.h>
166デフォルトの名無しさん
2017/12/17(日) 02:47:22.67ID:T7tjmkgj C/C++は言語自体は好きなんですが、GUIとかがプラットフォームに依存するみたいですが、そういった場合黙ってqt使うのが最善ですか?
167デフォルトの名無しさん
2017/12/18(月) 01:24:26.49ID:vrG0ZJDQ >>164
そのような構造体で直接読み書きしないのがベスト
そのような構造体で直接読み書きしないのがベスト
168デフォルトの名無しさん
2017/12/21(木) 16:50:57.91ID:FN6C0PcS ここが適切かわかりませんが、
make の Makefile を Visual Studio や NetBeans 等の IDE の
プロジェクトファイルに変換するツールはありませんか。
make の Makefile を Visual Studio や NetBeans 等の IDE の
プロジェクトファイルに変換するツールはありませんか。
169片山博文MZ ◆T6xkBnTXz7B0
2017/12/21(木) 16:54:33.43ID:fHSTQ7CK makeにはないが、似たようなものにCMakeというものがあって、CMakeならプロジェクトファイルを生成できる。
170168
2017/12/21(木) 17:10:02.95ID:FN6C0PcS >>169 そこまでは分ったのですが、
Makefile を CMakeLists.txt に変換するのはありますか?
見つけられたのは、nmake.exe 用の Makefile.mak を *.vsproj に変換する、
Python のスクリプトだけでした。。
Makefile を CMakeLists.txt に変換するのはありますか?
見つけられたのは、nmake.exe 用の Makefile.mak を *.vsproj に変換する、
Python のスクリプトだけでした。。
173デフォルトの名無しさん
2018/01/09(火) 19:29:59.07ID:cBwAL66C ライブラリ作成の指南書みたいな本ってありますか。
174デフォルトの名無しさん
2018/01/09(火) 22:23:30.03ID:9ubHCBZ8 環境によるんじゃ?
175デフォルトの名無しさん
2018/01/10(水) 01:19:44.15ID:CtX3Z92R とりあえず
c++のためのapiデザイン
でも読んでみるといいと思う
c++のためのapiデザイン
でも読んでみるといいと思う
176デフォルトの名無しさん
2018/01/10(水) 02:59:55.08ID:QjjLPcN0 読んでみるわ
177デフォルトの名無しさん
2018/01/13(土) 06:17:45.46ID:hj3TLdcf 定数以外の名前に「 _ 」を使うのって良くないって聞いたけどどうなの?
178デフォルトの名無しさん
2018/01/13(土) 09:08:14.97ID:P3TI7O0+ 趣味とか宗教とかの話であって、別に使って問題ない
ただ名前の先頭だったり、2回連続で使ったりすると
予約語に引っかかることがあるので注意(定数の場合も)
ただ名前の先頭だったり、2回連続で使ったりすると
予約語に引っかかることがあるので注意(定数の場合も)
179デフォルトの名無しさん
2018/01/13(土) 09:13:05.82ID:M+vRxjCB その辺有名ライブラリのルール付けとか調べてみるのもいいかもね
180デフォルトの名無しさん
2018/01/13(土) 09:23:55.53ID:M+vRxjCB GoogleがC++のスタイルガイド公開してる
これも参考になりそう
これも参考になりそう
181デフォルトの名無しさん
2018/01/16(火) 10:54:12.13 C++で何つくんの?
GUIプログラムならC#のほうが圧倒的に簡単だし
GUIプログラムならC#のほうが圧倒的に簡単だし
182デフォルトの名無しさん
2018/01/16(火) 11:06:50.90ID:E1MTmeKy CAD
183デフォルトの名無しさん
2018/01/16(火) 11:07:58.52 そんな上級者にしか用途がない言語か
184デフォルトの名無しさん
2018/01/16(火) 11:24:35.41ID:/aUGqjlJ 個人的にC/C++は高級なアセンブラだと思っている
C#とは存在するレイヤが違うから、比較条件として用途を挙げるのはちょっと違うかなって
C#とは存在するレイヤが違うから、比較条件として用途を挙げるのはちょっと違うかなって
185デフォルトの名無しさん
2018/01/16(火) 11:25:50.16 で、何つくんの?
高級アセンブリの用途は?
高級アセンブリの用途は?
186デフォルトの名無しさん
2018/01/16(火) 12:09:46.86ID:J2S5K16W 画像処理
大規模ゲーム開発
大規模ゲーム開発
187デフォルトの名無しさん
2018/01/16(火) 12:32:40.41ID:6i0TmEx8 GoogleChrome
188デフォルトの名無しさん
2018/01/16(火) 13:22:26.10ID:6uwiuQcq ゲームとか速度が必要な場面でまだまだ使われてるでしょ
189デフォルトの名無しさん
2018/01/16(火) 15:46:42.36ID:e8xaSAkW CPUパワーを必要とするようなまとまった処理は
C/C++のような低級な高級言語が適している
組み込み用の小規模マイコンもCがほとんど
C/C++のような低級な高級言語が適している
組み込み用の小規模マイコンもCがほとんど
190デフォルトの名無しさん
2018/01/16(火) 19:09:30.75ID:Vb1E5r0O Pythonのライブラリも結局はCで作ってたりするしな。
191デフォルトの名無しさん
2018/01/17(水) 00:06:48.74ID:kWLOq5lU GUIはC#でWPFだけど、そこから使用するdllとか連携するサービスとかはc++。OSのAPIをいろいろ使う場合はC#だと面倒くさいからc++を選ぶ。
192デフォルトの名無しさん
2018/01/17(水) 01:07:00.24ID:X2mlxDcY OpenGLもC#か大変そうだな
193愛知人
2018/01/17(水) 09:14:59.53 Unityでいいよね
194デフォルトの名無しさん
2018/01/17(水) 11:15:20.21ID:X2mlxDcY ライセンス料が只ならいいよ
195デフォルトの名無しさん
2018/01/17(水) 11:23:31.36ID:4ILD3/U5 Unityでも速度が必要な場所はC++で書いて呼び出し
196愛知人
2018/01/17(水) 11:48:22.30 なんでC++ってendlいるの?
197デフォルトの名無しさん
2018/01/17(水) 12:24:58.46ID:/z6RTYd5 ちょっと何言ってるかわかんないです
198愛知人
2018/01/17(水) 13:34:56.30 なんでprintf使わないの?
199デフォルトの名無しさん
2018/01/17(水) 13:41:03.90ID:lhJfQamL 浪人と引き換えに無知を手に入れた男
200愛知人
2018/01/17(水) 13:43:22.44 で、返答は?
201デフォルトの名無しさん
2018/01/17(水) 14:07:42.46ID:l2H41H1D >>198
<cstdio>は正しくC++だからprintf使っても構わん 味噌 よ
後々になって「iostreamはでかいし あんまりうみゃくいかないエビフリャー」いうことになった きしめん だしね
endlは、改行の無い出力と在る出力を統一的に(フォーマット使わずストリームで)扱うには必要でしょ ひつまぶし?
愛知語は詳しくないけど察し手羽先
<cstdio>は正しくC++だからprintf使っても構わん 味噌 よ
後々になって「iostreamはでかいし あんまりうみゃくいかないエビフリャー」いうことになった きしめん だしね
endlは、改行の無い出力と在る出力を統一的に(フォーマット使わずストリームで)扱うには必要でしょ ひつまぶし?
愛知語は詳しくないけど察し手羽先
202愛知人
2018/01/17(水) 14:16:18.48 どうやったらこんなつまんないレスを返せるんだよ...
重症やな w
重症やな w
203デフォルトの名無しさん
2018/01/17(水) 14:19:41.37ID:l2H41H1D 言うな 自分でも検索履歴に「愛知 名物」って残ってるの見て
「人生を無駄にした」と真顔で後悔してるところだから
「人生を無駄にした」と真顔で後悔してるところだから
204デフォルトの名無しさん
2018/01/17(水) 15:03:17.62ID:MeUm47mp 何言ってんだこのバカ
205愛知人
2018/01/17(水) 16:08:09.91 あらら、怒っちゃった(笑)
206デフォルトの名無しさん
2018/01/17(水) 17:39:52.90ID:sykUBtM3 C++でしかできないもの作りたいだけど何かいいアイデアない?
208デフォルトの名無しさん
2018/01/17(水) 18:18:50.66ID:sykUBtM3 >>207
印刷はしたくないです..
印刷はしたくないです..
209デフォルトの名無しさん
2018/01/17(水) 20:00:30.20ID:W2btjMLE おs
210デフォルトの名無しさん
2018/01/27(土) 06:58:59.63ID:1R9xhZBX windowsとLinuxで動くクライアントアプリ開発してて、Linuxコンパイラは化石みたいなバージョンからgcc4.4をようやく使えるようになった
そこでC+11の一部が使えるようになったから使いたいと思ってる
ユーザにAPIを公開してるんだけど、ユーザがAPIを使うに際してはコンパイルオプションstdc++0xが必要なことにはしたくない。今までできてたのに、バージョンアップしたらコンパイルできなくなったとかいわれるからね。
ここで質問なんだけど、ユーザに公開しているヘッダファイルにC+11の記述がなければ、ユーザからの使い方は変わらないかな?手元で試してみた感じだと行けそうだって思ったけど、このへん危ないんじゃないのとか気をつけた方がいいよとかあれば意見よろしくです
そこでC+11の一部が使えるようになったから使いたいと思ってる
ユーザにAPIを公開してるんだけど、ユーザがAPIを使うに際してはコンパイルオプションstdc++0xが必要なことにはしたくない。今までできてたのに、バージョンアップしたらコンパイルできなくなったとかいわれるからね。
ここで質問なんだけど、ユーザに公開しているヘッダファイルにC+11の記述がなければ、ユーザからの使い方は変わらないかな?手元で試してみた感じだと行けそうだって思ったけど、このへん危ないんじゃないのとか気をつけた方がいいよとかあれば意見よろしくです
211デフォルトの名無しさん
2018/01/27(土) 08:45:12.76ID:x9sgfrz+ バイナリで配布するんだったらとりあえずシンボルをnmで取得して見比べてみるとか。
212デフォルトの名無しさん
2018/01/27(土) 10:25:52.07ID:RqfNKOXi ユーザからクロスコンパイラ提供してもらってバイナリ配布っす
nmコマンド、試す価値はありそうだありがとう
nmコマンド、試す価値はありそうだありがとう
213デフォルトの名無しさん
2018/01/28(日) 06:43:38.82ID:yhuRz+yt 以下のコードをgccでコンパイルすると
#include <iostream>
#include <functional>
using namespace std;
struct functor {
int& operator()(int& i) { return ++i; }
};
int main() {
int i = 0;
cout << functor{}(i) << endl; // 関数オブジェクトは問題なし
function<int& (int&)> lambda = [] (int& i) { return ++i; }; // コンパイルエラー
cout << lambda(i) << endl;
return 0;
}
「'main()::<ラムダ(int&)>' から非スカラ型 'std::function<int&(int&)>' への変換が要求されました」
というエラーになるのですが、どうしてでしょうか?
そもそもラムダ式は関数オブジェクトのシンタックシュガー、つまり等価なのではないんでしょうか?
#include <iostream>
#include <functional>
using namespace std;
struct functor {
int& operator()(int& i) { return ++i; }
};
int main() {
int i = 0;
cout << functor{}(i) << endl; // 関数オブジェクトは問題なし
function<int& (int&)> lambda = [] (int& i) { return ++i; }; // コンパイルエラー
cout << lambda(i) << endl;
return 0;
}
「'main()::<ラムダ(int&)>' から非スカラ型 'std::function<int&(int&)>' への変換が要求されました」
というエラーになるのですが、どうしてでしょうか?
そもそもラムダ式は関数オブジェクトのシンタックシュガー、つまり等価なのではないんでしょうか?
214デフォルトの名無しさん
2018/01/28(日) 07:45:35.06ID:kxFN6buW >>213
戻り値がintになってる
戻り値の型を後置で書いてやればいいかな
function<int& (int&)> lambda = [] (int& i) -> int& { return ++i; };
戻り値がintになってる
戻り値の型を後置で書いてやればいいかな
function<int& (int&)> lambda = [] (int& i) -> int& { return ++i; };
215デフォルトの名無しさん
2018/01/28(日) 22:25:05.79ID:yhuRz+yt216デフォルトの名無しさん
2018/02/06(火) 23:57:09.32ID:ZZWnbRb2 typedef int myTypeA;
typedef int myTypeB;
class Test {
void set(myTypeA a);
void set(myTypeB b);
priate:
int A;
int B;
};
のような事例で、引数に応じて専用のセッターを用意したいのですが、
int型の2種類の引数に対して、上記のように書くとコンパイルエラーになってしまいます。
どのようにするのが良いでしょうか?
typedef int myTypeB;
class Test {
void set(myTypeA a);
void set(myTypeB b);
priate:
int A;
int B;
};
のような事例で、引数に応じて専用のセッターを用意したいのですが、
int型の2種類の引数に対して、上記のように書くとコンパイルエラーになってしまいます。
どのようにするのが良いでしょうか?
217デフォルトの名無しさん
2018/02/07(水) 00:04:25.80ID:k5RJAFTX structを使う?
struct my_TypeA{ int v;};
struct my_TypeA{ int v;};
218デフォルトの名無しさん
2018/02/07(水) 00:18:25.18ID:yuAfwWTK なるほど、、、確かにtypedefだと別名になるだけですね
structかclassで別の型にしないとダメですね
ありがとうございます!
structかclassで別の型にしないとダメですね
ありがとうございます!
219デフォルトの名無しさん
2018/02/07(水) 03:43:04.13ID:LQaGrglb オブジェクト指向では、型による分岐処理は無くなる。
汎化
f(親型)
ここに、親型の子型であるA型・B型が入っても、正常に動くのが、オブジェクト指向
汎化
f(親型)
ここに、親型の子型であるA型・B型が入っても、正常に動くのが、オブジェクト指向
220デフォルトの名無しさん
2018/02/09(金) 15:21:46.70ID:+q9wZMZv などと訳のわからないこと(でもないが)を供述しており
221デフォルトの名無しさん
2018/02/11(日) 04:59:49.56ID:9irhhPDg C++には強いエイリアスが無いからなあ
222デフォルトの名無しさん
2018/02/23(金) 16:21:25.57ID:UAqVoMsi C++じvtable参照することになるから遅いだろ
223デフォルトの名無しさん
2018/02/25(日) 04:05:35.43ID:Zrtx8k52 >>216
セットする値の名称にする
例えば三角形を表すオブジェクトで底辺と高さをセットするのであれば、base()とheight()になる
プロパティとして使うのだから、setXXX()みたいに書かなくてもいい
setter単独で存在することはありえないからgetterも設けること
setterって余り必要ない
コンストラクタからの初期化で十分の場合が多い
セットする値の名称にする
例えば三角形を表すオブジェクトで底辺と高さをセットするのであれば、base()とheight()になる
プロパティとして使うのだから、setXXX()みたいに書かなくてもいい
setter単独で存在することはありえないからgetterも設けること
setterって余り必要ない
コンストラクタからの初期化で十分の場合が多い
224デフォルトの名無しさん
2018/02/25(日) 14:23:16.60ID:8l5JrV0a >>219
だぶるでぃすぱっち
だぶるでぃすぱっち
225デフォルトの名無しさん
2018/03/03(土) 13:43:59.95ID:Vl4EAVf3 2の累乗でないときのmod演算の高速化の方法、何かありませんか?
そこらへんはコンパイラで最適化されるんですかね
そこらへんはコンパイラで最適化されるんですかね
226デフォルトの名無しさん
2018/03/03(土) 14:09:48.07ID:xC+xvi0u227デフォルトの名無しさん
2018/03/03(土) 14:14:16.62ID:Vl4EAVf3228デフォルトの名無しさん
2018/03/06(火) 00:16:25.34ID:EXuXevGu ユニークポインターにキャラの可変配列をヒープからとってリセットしたはいいけど、デリーターって簡単に実装/定義できる?例が欲しい。
229デフォルトの名無しさん
2018/03/06(火) 00:47:05.22ID:yCnPPW+5 mutex g_Mtx;
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
}
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
}
230デフォルトの名無しさん
2018/03/06(火) 00:55:45.44ID:yCnPPW+5 mutex g_Mtx;
すみません、途中で送信してしまいました。
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
int Val = Func( 2, 3 );
// Valを参照する処理
}
void ThreadFunc1()
{
lock_guard<mutex> Lock( g_Mtx );
// g_Valを参照する処理
}
上記のようなスレッド関数が非同期に実行されるとき、
Func()はスレッドセーフ(g_Val書き換え中に参照されない)でしょうか?
(1)lock_guard<mutex>によるミューテックスロック
(2)g_Valの書き換え
(3)戻り値を読み出し元スレッドにコピー(あるいはムーブ)
(4)lock_guard<mutex>がスコープから外れアンロック
というシーケンスを期待しています。
すみません、途中で送信してしまいました。
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
int Val = Func( 2, 3 );
// Valを参照する処理
}
void ThreadFunc1()
{
lock_guard<mutex> Lock( g_Mtx );
// g_Valを参照する処理
}
上記のようなスレッド関数が非同期に実行されるとき、
Func()はスレッドセーフ(g_Val書き換え中に参照されない)でしょうか?
(1)lock_guard<mutex>によるミューテックスロック
(2)g_Valの書き換え
(3)戻り値を読み出し元スレッドにコピー(あるいはムーブ)
(4)lock_guard<mutex>がスコープから外れアンロック
というシーケンスを期待しています。
231230
2018/03/06(火) 00:58:37.27ID:yCnPPW+5 誤:読み出し元スレッド
正:呼び出し元スレッド
正:呼び出し元スレッド
232230
2018/03/07(水) 00:28:47.80ID:+JS1hm36 すみません、他スレで聞きます。
233デフォルトの名無しさん
2018/03/07(水) 19:00:17.77ID:BpTZedcA 事情があって下記の型の関数を、
void Func1(char a);
下記の型の関数ポインタに代入して呼びたいと思っています。
int*(*p)(int*);
p = (int*(*)(int*))Func1;
p((int*)123);
動作としてはFunc1(123)と呼んだときと同じものを期待しており、
試したところそれっぽく動作しているのですが、
致命的な問題等あります?
"暴走の危険あり"など。
void Func1(char a);
下記の型の関数ポインタに代入して呼びたいと思っています。
int*(*p)(int*);
p = (int*(*)(int*))Func1;
p((int*)123);
動作としてはFunc1(123)と呼んだときと同じものを期待しており、
試したところそれっぽく動作しているのですが、
致命的な問題等あります?
"暴走の危険あり"など。
234デフォルトの名無しさん
2018/03/07(水) 19:20:05.55ID:/Jrz1mw6 スタックに積むサイズは通常int
long longとかで無ければ実害は無い
long longとかで無ければ実害は無い
235デフォルトの名無しさん
2018/03/07(水) 19:29:05.35ID:iizJnzkK >>233
C11の6.3.2.3の8によると、the behavior is undefinedだ。
たとえばcharが4バイトに自動昇格して、ポインタが8バイトだったりすると、
どうなるかわかったもんじゃない。鼻からなんちゃらだ。
C++は知らん。
C11の6.3.2.3の8によると、the behavior is undefinedだ。
たとえばcharが4バイトに自動昇格して、ポインタが8バイトだったりすると、
どうなるかわかったもんじゃない。鼻からなんちゃらだ。
C++は知らん。
236片山博文MZ ◆T6xkBnTXz7B0
2018/03/07(水) 19:29:59.98ID:Ssa+vNsg sizeof(int) != sizeof(int*)の場合(例えばx64)、どうなるかな?
237デフォルトの名無しさん
2018/03/07(水) 19:34:38.56ID:iizJnzkK そうそう、undefinedのあとはほんとに何が起きるかわからんよ。
コンパイラが何をしでかしても文句言えない。
たまたま今の環境で動いても、明日コンパイラを更新したら挙動が変わりうる。
コンパイラが何をしでかしても文句言えない。
たまたま今の環境で動いても、明日コンパイラを更新したら挙動が変わりうる。
238デフォルトの名無しさん
2018/03/07(水) 20:01:22.38ID:MtWgjxh8 「事情があって」の事情を解消する方が安全だと思うけど…。
void Func1(char a); を呼び出すラッパ関数を使うのはどうだろ?
int* Func1_wrapper(int *p)
{
uintptr_t arg = (uintptr_t)p;
Func1((char)arg); // 縮小変換が危険
return NULL;
}
int* (*p)(int*);
p = Func1_wrapper;
p((int*)123); // 明らかに不正アラインメントだが
void Func1(char a); を呼び出すラッパ関数を使うのはどうだろ?
int* Func1_wrapper(int *p)
{
uintptr_t arg = (uintptr_t)p;
Func1((char)arg); // 縮小変換が危険
return NULL;
}
int* (*p)(int*);
p = Func1_wrapper;
p((int*)123); // 明らかに不正アラインメントだが
239はちみつ餃子 ◆8X2XSCHEME
2018/03/07(水) 20:34:34.64ID:TWOfgg7C240デフォルトの名無しさん
2018/03/10(土) 22:50:07.25ID:tBgkA+tH C++で窓出してプログラム組みたい時ってどういう風にするもんなんでしょうか
windows.hで一つ一つボタンの位置を設定してハンドルやらコールバックと格闘するもんなんでしょうか
それとも何か気の利いた便利なライブラリとかがあるんでしょうか
というかこの手のライブラリやフレームワーク的なものを探したりしたい場合はどういう場所から情報を集めるものなんでしょうか
それっぽいキーワードでgoogleで検索して探そうとしても上手く情報を見つけられないのですが、根気よくページを確認していくしかないのでしょうか
windows.hで一つ一つボタンの位置を設定してハンドルやらコールバックと格闘するもんなんでしょうか
それとも何か気の利いた便利なライブラリとかがあるんでしょうか
というかこの手のライブラリやフレームワーク的なものを探したりしたい場合はどういう場所から情報を集めるものなんでしょうか
それっぽいキーワードでgoogleで検索して探そうとしても上手く情報を見つけられないのですが、根気よくページを確認していくしかないのでしょうか
>>240
基本的には win32api を使うことになり、私は C++ からwin32api( ::DefWindowProc() とか)を個別呼び出している
気の利いたライブラリのことはよく知らない
基本的には win32api を使うことになり、私は C++ からwin32api( ::DefWindowProc() とか)を個別呼び出している
気の利いたライブラリのことはよく知らない
242デフォルトの名無しさん
2018/03/10(土) 23:18:25.22ID:tBgkA+tH やっぱりそういう感じになるんですね
頑張って勉強します
頑張って勉強します
243デフォルトの名無しさん
2018/03/10(土) 23:42:00.51ID:4x8PIJN4 >>240
Windowsに特化するなら Win32APIのほかにMFCやWTLや.NET framework(C++/CLIで良ければ)などのライブラリを使う
サードパーティならC++ BuilderのVCLとかあとはクロスプラットホームのQtとかGtk+とかwxWidgetsとか他にもあると思うけど
最近はデスクトップアプリが落ち目なのでこれという定番はなくて目的に応じて分散しているのでは?
自力で情報が集められない程度ならC++でGUIなんて止めとけという気がしないでもない
Windowsに特化するなら Win32APIのほかにMFCやWTLや.NET framework(C++/CLIで良ければ)などのライブラリを使う
サードパーティならC++ BuilderのVCLとかあとはクロスプラットホームのQtとかGtk+とかwxWidgetsとか他にもあると思うけど
最近はデスクトップアプリが落ち目なのでこれという定番はなくて目的に応じて分散しているのでは?
自力で情報が集められない程度ならC++でGUIなんて止めとけという気がしないでもない
244デフォルトの名無しさん
2018/03/11(日) 00:23:13.22ID:5+tjHPTy ありがとうございます。それぞれ見てみます
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【米FRB】0.25%利下げ決定 3会合連続、雇用下支え [蚤の市★]
- 訪米認証「ESTA」、SNS利用情報の提出義務化へ 日本人観光客も対象に [蚤の市★]
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 【紅白】back number 白組で3年ぶり2回目の出場へ 「幅広い世代から支持」複数曲を披露する見込み [ひかり★]
- 「身を切る改革」どこへ? 維新「身内」への公金支出、地方でも続々 [蚤の市★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- おっぱいピアノがスケベな服着せられて逆さ吊りにされて演奏してる夢を見た
- お前らって議論できないよな
- 外に鳥が大量にいる
- 俺の車ガソリンタンクが80Lとカタログに書いてあるのにかなりギリギリの状態で給油しても60Lちょいしか入らない
- なんJを健康にするスレ
- 連載が40年続いたこち亀のアニメがわずか8年で終わったのは声優に芸能人を起用した事だよな
