[過去ログ]
0からの、超初心者C++相談室 (1002レス)
0からの、超初心者C++相談室 http://mevius.5ch.net/test/read.cgi/tech/1542002113/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
1: デフォルトの名無しさん [] 2018/11/12(月) 14:55:13.35 ID:Tf74ZWQr 何にも知らない0からの出発、超初心者のためのC++相談室 http://mevius.5ch.net/test/read.cgi/tech/1542002113/1
903: デフォルトの名無しさん [] 2024/08/12(月) 08:49:28.44 ID:+jMHtzbv 既に寿命が切れてる場合はlock() が無効な shared_ptr を返すのでそれで判定する lock() を呼んだ後は戻り値の shared_ptr が寿命を伸ばすので問題ない shared_ptrは「有効なshared_ptrが1つ以上ある間はオブジェクトの寿命が消えない」ものなので、lock() が返すshared_ptrを保持してる間は消えないよ lockを「weak_ptrからshared_ptrへの昇格を試みる」ものと考えても良い lockしたい箇所の時点で必ずオブジェクトが生きていて欲しいなら、それはweak_ptrでなくshared_ptrを使うべき http://mevius.5ch.net/test/read.cgi/tech/1542002113/903
904: デフォルトの名無しさん [sage] 2024/08/12(月) 10:20:21.64 ID:Lq53CINI >>899 2000年くらいにSTLはこれで勉強したよ 基本的なことは網羅されているが C++の新しい仕様には対応してないので 別途学習すべし いまもっと良い本があるかは分からない C++の仕様は建て増しなので この本に書かれていることは無意味ではない http://mevius.5ch.net/test/read.cgi/tech/1542002113/904
905: デフォルトの名無しさん [] 2024/08/12(月) 13:09:35.61 ID:XQ/hRBSk キメラ http://mevius.5ch.net/test/read.cgi/tech/1542002113/905
906: デフォルトの名無しさん [] 2024/08/12(月) 16:00:24.68 ID:K9Aw1MHl 超初心者とは何なのか・・・ http://mevius.5ch.net/test/read.cgi/tech/1542002113/906
907: デフォルトの名無しさん [] 2024/08/13(火) 01:12:06.02 ID:sOEG0OlC >>900>>904 返答ありがとうございます。 今同著者の別の本で勉強中ですが基本的なところでこれも買っとこうかな?って質問しました。 基本参考書として買ってみます。 基礎的なところ終わったら自分が作りたいプログラムに必要な現状の本でも買ってみます。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/907
908: デフォルトの名無しさん [] 2024/08/13(火) 01:32:59.16 ID:sOEG0OlC すいません。誰か下のコンパイルオプションわかる方いますか? 解いてた問題の解答にも文字化けするって書いてあったので文字化け対策のオプションなんかないかな?って思って調べたらこのオプションで解決できるって出てたので使ってた人の入力例そのままオプション挿入してみてちゃんと解決できたから気になって調べたんですがググっても出てこなくて入力例が次の行のやつです。 g++ test.cpp -finput-charset=CP932 -fexec-charset=CP932 -finput-charset -fexec-charset http://mevius.5ch.net/test/read.cgi/tech/1542002113/908
909: デフォルトの名無しさん [sage] 2024/08/13(火) 02:09:15.07 ID:sAvdrrrS >>908 https://www.google.com/search?q=%22-finput-charset%22 http://mevius.5ch.net/test/read.cgi/tech/1542002113/909
910: デフォルトの名無しさん [] 2024/08/13(火) 07:27:51.38 ID:8FMmWnXe ああなるほど、意図せずマイナス検索状態になってたから一件もヒットしなかったってことか あるある http://mevius.5ch.net/test/read.cgi/tech/1542002113/910
911: デフォルトの名無しさん [sage] 2024/08/13(火) 08:43:34.22 ID:6ajF2Nvb >>899 シルトは有名 ロベールも有名だったけど、 C++11 に対応していないので古い STL標準講座、1999年 ハーバート・シルト 著 επιστημη(エピステーメー) 監修 この本も古い。 確か、エピステーメーはC++ の標準化委員だっけ? C++テンプレートテクニック―簡潔で再利用しやすいコードのためのC++活用術 επιστημη/高橋 晶【著】、2009 独習C++ 新版、2019/11 高橋 航平 (著), επιστημη(エピステーメー) (監修) http://mevius.5ch.net/test/read.cgi/tech/1542002113/911
912: デフォルトの名無しさん [] 2024/08/13(火) 12:38:43.84 ID:sOEG0OlC >>909>>910 ありがとうございます てか、検索でそういうことあるんですね http://mevius.5ch.net/test/read.cgi/tech/1542002113/912
913: デフォルトの名無しさん [sage] 2024/08/13(火) 12:57:30.56 ID:lcpgo4xV >>903 了解です、どうもありがとうございます >>902 一般的なことを知りたかっただけなので http://mevius.5ch.net/test/read.cgi/tech/1542002113/913
914: デフォルトの名無しさん [] 2024/08/14(水) 09:51:50.71 ID:UePmitOB 変数名の付け方について教えてくだち Objectの個数、とかは nobjs とか objcnt (類例: argc)とかは本に載っていてそれぞれ nobjs --- number of objects の短縮表記 objcnt --- object count の短縮表記(名詞obuectが形容詞的活用 となって対応する同じ語順の英語表現がある気がするのですが <limit.h> の INT_MAX、INT_MIN はmaxやminがなぜ後置? 何の短縮形? minやmaxの後置と前置の使い分けとは一体…… http://mevius.5ch.net/test/read.cgi/tech/1542002113/914
915: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/08/14(水) 10:32:46.90 ID:z6gmNdON >>914 C は一貫した名付規約 (naming convention) を定めていないし、主要な処理系が持っていたものを追認する形で仕様に入ることもよくあるので起源ごとに名前の方式は異なる。 慣例はおおよそ踏襲されるのでもし新しい整数型が追加されたらそれの最大・最小値は同じような名前で表されると思うけれど全体を通したルールはない。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/915
916: デフォルトの名無しさん [] 2024/08/14(水) 11:43:42.69 ID:gAudIBvM MIN_LONG, MIN_SHORT, MIN_USHORT だとmin まで同じで探しにくい INT_MAXだとINT_ まで打てばコード補完できるけど、逆の語順だとMAX_ まで打った際に各型の候補がズラーっと並ぶことになる 当時は高級なエディタは無いし、多分そんな意図で命名してないと思うけど 、便利と言えば便利 意味を考えるならそれは max of int でなく、intという空間におけるmaxという値 (言語によってはint.max と書くような値) と考えると良いと思う http://mevius.5ch.net/test/read.cgi/tech/1542002113/916
917: デフォルトの名無しさん [sage] 2024/08/14(水) 13:14:34.06 ID:+mepCwPn C++ならstd::numeric_limits使おうよ http://mevius.5ch.net/test/read.cgi/tech/1542002113/917
918: デフォルトの名無しさん [] 2024/08/14(水) 13:42:54.01 ID:UePmitOB >>915 >全体を通したルールはない。 えええええええ…… 迷える子羊は一体どうしたら……orz >>917 それはそうかもしれんが std::numeric_limits<double>::min()ではなくてstd::numeric_limits<double>::lowest()なのがイマイチなカンジ あと while ((*p <= CHAR_MAX && isspace(*p)) { p++; } とかのときは<limits.h>のがお似合いに思える…… http://mevius.5ch.net/test/read.cgi/tech/1542002113/918
919: デフォルトの名無しさん [sage] 2024/08/14(水) 13:49:52.66 ID:NvgdlQi4 些細なことにこだわんな 複数人で開発してる以上そういう揺れはどうしても起こり得る 受け入れて先行け http://mevius.5ch.net/test/read.cgi/tech/1542002113/919
920: デフォルトの名無しさん [sage] 2024/08/14(水) 14:35:57.51 ID:uvjb8yy0 object count, count number of object integer maximum, maximum of integer …同じじゃね? http://mevius.5ch.net/test/read.cgi/tech/1542002113/920
921: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/08/14(水) 15:32:03.62 ID:z6gmNdON 全体を通した名前の指針としてはマクロは大文字でそれ以外は小文字 (スネークケース) ってくらいかなぁ。 関数形式のマクロは小文字なのもあったりと例外はいくらかあるけども。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/921
922: デフォルトの名無しさん [sage] 2024/08/14(水) 21:18:49.93 ID:uPunKI9P 今ってクラス名とか割とキャメルケースじゃないですか? DocumentWindowみたいな 一方でC++自体は小文字とアンダースコアで でも意外とちぐはぐな感じはない。むしろ予約語、システム的なものは小文字で ユーザー定義のものと分離されていていい感じ? http://mevius.5ch.net/test/read.cgi/tech/1542002113/922
923: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/08/14(水) 22:08:58.60 ID:z6gmNdON >>922 C++ の大元の設計者である Stroustrup は言語の技術的な詳細 (文法上の役割?) を名前に埋め込むことを嫌がってる。 https://www.stroustrup.com/bs_faq2.html#Hungarian クラスだから、ユーザ定義だからという区別を名前に入れるべきじゃないという考え方を取ってるわけ。 その一方で言語としての縛りは入れないという方針も著書に書いてある。 思うところはありつつも個々の場面は言語ユーザの判断にゆだねるってことだね。 C++ は C++ だけで完結するわけじゃなくて色んなシステムと接続することもあるからその都合に合わさないといけないこともあるだろうし。 たとえば Windows だと多くの API がキャメルケースなわけで。 私自身にはクラス名をキャメルケースにするのはちぐはぐに見えている。 でも出自が違うライブラリを組み合わせるならそういうこともしょうがないとも思ってる。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/923
924: デフォルトの名無しさん [] 2024/08/14(水) 22:31:40.03 ID:gAudIBvM クラスや変数名に異なる命名を敵用するといった考え方が出てきたのがおそらC++登場の後だから仕方ないという感じ C++は他の言語ほどには統一されたルールはない 自分は個人的に以下のルールを採用してる おそらくPythonやRustあたりのルールに近い ・型の名前 (クラス、構造体、enum) は PascalCase ・変数と関数名は lower_snake_case ・定数とマクロは UPPER_SNAKE_CASE ・クラスのメンバー変数は value_ のように末尾にアンダースコアを付ける ・構造体のメンバーはアンダースコアなし (変数と同じ) 上記もあくまで個人的な意見に過ぎないので、プロジェクトの方針があるならそれに合わせるのが良いと思う あと基本的な命名ルールも言語によって変わるので、その言語内に慣習やルールがあるならそれも見ておくと良いと思う 例えばC#はメソッドを PascalCase にするなど、上記とは異なる慣習がある http://mevius.5ch.net/test/read.cgi/tech/1542002113/924
925: デフォルトの名無しさん [] 2024/08/14(水) 22:37:11.57 ID:gAudIBvM 標準ライブラリは型が lower_snake なんだけどね (std::string とか std::vectorとか) 自作型をこれに合わせるかは好みの域を出ない気がする 自分は型と関数で区別付けたいから PascalCaseにしてます (例. class MyData; enum MyEnum) http://mevius.5ch.net/test/read.cgi/tech/1542002113/925
926: デフォルトの名無しさん [] 2024/08/14(水) 22:37:12.21 ID:gAudIBvM 標準ライブラリは型が lower_snake なんだけどね (std::string とか std::vectorとか) 自作型をこれに合わせるかは好みの域を出ない気がする 自分は型と関数で区別付けたいから PascalCaseにしてます (例. class MyData; enum MyEnum) http://mevius.5ch.net/test/read.cgi/tech/1542002113/926
927: デフォルトの名無しさん [] 2024/08/18(日) 12:06:41.90 ID:BK0va+Po iostreamとか糞やん http://mevius.5ch.net/test/read.cgi/tech/1542002113/927
928: デフォルトの名無しさん [sage] 2024/08/23(金) 00:25:52.73 ID:Vi8prHau はちみつ先生の中の人ってエピステーメー氏じゃないですか。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/928
929: デフォルトの名無しさん [sage] 2024/08/23(金) 12:18:20.78 ID:x07V73qD そなの? 何で? http://mevius.5ch.net/test/read.cgi/tech/1542002113/929
930: デフォルトの名無しさん [sage] 2024/08/23(金) 23:55:05.93 ID:Vi8prHau エピ氏はかつて標準化委員だったそうです。はちみつ先生は、規格書が完全に頭に入ってる感じですから委員経験者と見ても違和感ない。 スレ民に委員がいるという話もあります。 あと前に「~じゃろ」ってレスを一度だけ見たのですが、それがエピ氏風に思えました。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/930
931: デフォルトの名無しさん [sage] 2024/08/24(土) 00:19:56.05 ID:czb9YTjo なるほどー 証拠としては足りないと思うけども矛盾はしない はちみつ氏と対立する立場で議論したことがあるけども エピ氏だとしたら感慨深い STL標準講座で勉強した世代だし http://mevius.5ch.net/test/read.cgi/tech/1542002113/931
932: デフォルトの名無しさん [sage] 2024/08/25(日) 00:23:17.55 ID:zZ+WMAII >>928 私は個人的なことは書かないようにしているし書いている場合でも嘘を混ぜているのだけれどプロのプログラマではないのは本当だと断言する。 肯定も否定もしたくないんだけど変に誰かと混同されるとその人に迷惑がかかるかもしれないからはっきりさせておく。 私はプログラムなりプログラミングの解説なりで金を貰ったことは全くない素人で、名の知られた人物ではない。 アマチュアなりになんらかの分野で有名だったりもしない。 >>930 規格が頭に入ってるわけないでしょ。 毎回調べてる。 プログラムの設計の妥当性などについては議論を戦わせればよいと思うけど今ある規格がどうなってるかは規格を調べるしかない。 それなのに空想で議論するような馬鹿馬鹿しいことがちょくちょく起こってるから話を先に進めたくて規格を持ち出してるだけ。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/932
933: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/08/25(日) 00:54:19.91 ID:zZ+WMAII 名前が抜けてた。 >>932 は私ね。 JaneXeno で書き込めなくてウェブブラウザから書き込んだらミスった。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/933
934: デフォルトの名無しさん [] 2024/08/25(日) 18:28:51.25 ID:uK1NQ0Uz 質問です。参考書に乗ってた例試してたんですが下のコードがどういう動作してるのかよくわかりません。実行したらif(argc !=2)のところのコメント表示しかされませんでした。 #include <iostream> #include <fstream> using namespace std; int main(int argc, char *argv[]) { if(argc !=2) { cout <<"使い方: WRITE <ファイル名>\n"; return 1; } ofstream out(argv[1]); if(!out) { cout <<"出力ファイルが開けません\n"; return 1; } char str[80]; cout << "文字列をディスクに書き込み、$で停止します\n"; do { cout << ": "; cin >> str; out << str << endl; }while(*str !='$'); out.close(); return 0; } http://mevius.5ch.net/test/read.cgi/tech/1542002113/934
935: デフォルトの名無しさん [sage] 2024/08/25(日) 18:44:55.52 ID:tzsbYjlF >>934 https://www.google.com/search?q=main+argc http://mevius.5ch.net/test/read.cgi/tech/1542002113/935
936: デフォルトの名無しさん [] 2024/08/25(日) 23:27:35.25 ID:uK1NQ0Uz >>935 返信ありがとうございます。 mainのところがコマンドライン実行用のものだとわかったのですがif(argc !=2)だけが実行されて char str[80]の一行下のコメントまで行かないで実行終わってるのでそこがどうなってるのかよくわかってません。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/936
937: 934 [] 2024/08/26(月) 00:51:12.62 ID:Lf2Vflpz 参考書に載ってるからまさかと思ったんですが>>934のコードってif文のreturnで強制終了させられてるってことですよね? ちょっと気になってif文のところコメントアウトして動かしてみたらdo while文のところまで動いてたからif(argc !=2)の説明文表示しておいてがreturn 1で返してmainのところが終了させてるのかというのであってますか? しかも出力ファイル検出用のif文のところも絶対に入る形になっちゃってるみたいなので説明文はdo while文の入力で出力ファイル指定してね。みたいな文章ついているんですが例として出てるのに欠陥あるコードという認識でよろしいのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1542002113/937
938: 934 [] 2024/08/26(月) 01:02:13.28 ID:Lf2Vflpz 自己解決しました。 今回の例って実行時に一緒に書き込みファイル名入力するだけだったのを気付いてなかっただけでした。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/938
939: デフォルトの名無しさん [sage] 2024/08/26(月) 09:03:23.80 ID:Nzy9klFi せっかく>>935がキーワードで検索してるのに「自己解決」かよ http://mevius.5ch.net/test/read.cgi/tech/1542002113/939
940: デフォルトの名無しさん [sage] 2024/08/26(月) 09:15:40.09 ID:y+gYSKWx 超初心者スレでそんな回りくどい指摘で理解しろというほうが厳しいのでは http://mevius.5ch.net/test/read.cgi/tech/1542002113/940
941: デフォルトの名無しさん [sage] 2024/08/26(月) 09:42:05.98 ID:B88aYAlq >>934 「よくわかりません」というのは質問になっていません。 何がわからないのかが伝わるようにまとめてください。 結果からすると argc や argv がコマンドラインから渡されるものだということがわかっていなかったようですが、質問一般のやり方としては「こうなると理解している」「でも実際にはこうなった」という形にすると伝わりやすいと思います。 質問を整理する過程で答えが分かってしまうのもよくあることです。 (ラバーダック・デバッグ) それと参考書を元にしている場合は参考書のタイトルを書くのが望ましいです。 もしその本を持っている人がいたら前後の文脈からより適切な回答をできますし、同じ疑問をもった人がウェブ検索でここにたどり着くことが出来るかもしれないからです。 と、超初心者スレらしく質問の仕方の基本を書いておきます。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/941
942: デフォルトの名無しさん [sage] 2024/08/26(月) 10:49:37.17 ID:3+7ACU+U !=2 よりも < 2 派は少数派? http://mevius.5ch.net/test/read.cgi/tech/1542002113/942
943: デフォルトの名無しさん [] 2024/08/26(月) 15:31:48.06 ID:cZUTj8Xv !=2のほうが安全よね 引数が2つ以上渡された場合、ユーザーが引数の意味を勘違いしている可能性があるので第1引数をファイル名として扱うのは危険かもしれない http://mevius.5ch.net/test/read.cgi/tech/1542002113/943
944: デフォルトの名無しさん [sage] 2024/08/26(月) 18:34:12.28 ID:vEMD05Dv まんこまんこー まんこまんこー まんこまんこー 君にまんこまんこー http://mevius.5ch.net/test/read.cgi/tech/1542002113/944
945: デフォルトの名無しさん [] 2024/08/26(月) 18:43:51.64 ID:FhzwHLyM 萬恋次郎 よろずれんじろう http://mevius.5ch.net/test/read.cgi/tech/1542002113/945
946: デフォルトの名無しさん [sage] 2024/08/28(水) 10:09:54.84 ID:W2AehnGr 一つや無しでも許容するかしないかの違い http://mevius.5ch.net/test/read.cgi/tech/1542002113/946
947: デフォルトの名無しさん [sage] 2024/10/29(火) 09:32:10.21 ID:Pp2f7Vup すみません、std::atomic<bool> m_added = false; というインスタンス変数がある クラスで bool isAdded() { return m_added; } というメンバ関数を作ると error: use of deleted function 'std::atomic<bool>::atomic(const std::atomic<bool>&)' というエラーになってしまいます。なぜこんなことに? ググると return m_added.load(); とすればよさげで、実際エラーにはならなくなりますが これで合っていますでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1542002113/947
948: デフォルトの名無しさん [sage] 2024/10/29(火) 10:21:38.62 ID:G3xxa4mJ >>947 それは std::atomic<bool> という型であって、bool型ではないから。 load()でboolに変換されているということだね。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/948
949: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/10/29(火) 11:42:59.70 ID:IsdOq2r9 >>947 インスタンス変数って何? 文脈から推測するとデータメンバのことかな? だとするとこんな感じのことだと思って説明するよ。 class foo { std::atomic<bool> m_added = false; public: bool isAdded() { return m_added; } }; こういう書き方だと std::atomic<bool> m_added = false; はコピー初期化という扱いになる。 なのでコピーコンストラクタが必要だが std::atomic にはコピーコンストラクタが無いのでコピーコンストラクタがないという旨がエラーメッセージとして表示される。 解決方法としてはメンバ初期化子リストで初期化すればいい。 これなら直接初期化の扱いになる。 class foo { std::atomic<bool> m_added; public: foo(void) : m_added(false) {} bool isAdded() { return m_added.load(); } }; C++17 以降だとコピー省略が保証される (かつコピーコンストラクタの存在を要求しない) 場面なので C++17 以降を使うのなら修正は必要ない。 std::atomic<T> には operator T() があるので std::atomic<bool> から bool へは変換できて、そのときの効果は std::atomic<bool>::load を呼び出すのと同じ。 暗黙に変換するのでこの部分は本来なら問題ないはず。 ここを修正してエラーが出なくなったというのは何か誤解してると思う。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/949
950: 949 [sage] 2024/10/29(火) 21:08:49.76 ID:DeRlzLOn すみません、色々勘違いやら説明不足やらあるようです。あと用語もいろいろと。 まず std::atomic<bool> m_added = false; という初期化ですが、 自分の環境はC++17(のはず)なので、これは大丈夫だったようです http://mevius.5ch.net/test/read.cgi/tech/1542002113/950
951: 949 [sage] 2024/10/29(火) 21:14:42.30 ID:DeRlzLOn で、本当の問題は、condition_variable::wait_for()の述語バージョンのコードでして 諸般の事情でネットから拾ってきたコードを一部変更して書きますと(たぶんインデントが 壊れますが、ご了承ください) #include <iostream> #include <thread> #include <mutex> #include <condition_variable> #include <chrono> #include <atomic> std::mutex mtx; std::condition_variable cv; std::atomic<bool> ready = false; void wait_for_event() { std::unique_lock<std::mutex> lock(mtx); cv.wait_for(lock, std::chrono::seconds(3), []{ return ready; }); std::cout << "Event occurred or timeout reached" << std::endl; } int main(void) { std::thread worker(wait_for_event); worker.join(); return 0; } http://mevius.5ch.net/test/read.cgi/tech/1542002113/951
952: デフォルトの名無しさん [sage] 2024/10/29(火) 21:15:37.83 ID:oxmgzCly volatileが廃止されてatomicになったんだっけ? http://mevius.5ch.net/test/read.cgi/tech/1542002113/952
953: 949 [sage] 2024/10/29(火) 21:19:59.00 ID:DeRlzLOn この、述語部分のラムダ式で return ready; とするとコピーが発生するのでatomic的に まずい(それをコピーコンストラクタをdeleteすることで実現している)、という理解です で、ではどうしたらいいかという話に http://mevius.5ch.net/test/read.cgi/tech/1542002113/953
954: デフォルトの名無しさん [sage] 2024/10/29(火) 21:25:03.73 ID:DeRlzLOn うわ、名前の>>949は間違いです、>>947でした、ごめんなさい http://mevius.5ch.net/test/read.cgi/tech/1542002113/954
955: デフォルトの名無しさん [sage] 2024/10/29(火) 21:37:22.02 ID:vJbaxs/e 述語の戻り値型にboolを明示的に指定すればおk http://mevius.5ch.net/test/read.cgi/tech/1542002113/955
956: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/10/30(水) 07:03:45.19 ID:o3z0lAnP >>951 ラムダ式の返却値の型は省略すると return に与えた式から推論され、推論結果は参照にはならない。 つまり []{ return ready; } は []->std::atomic<bool>{ return ready; } と書いたのと同じということ。 これだと値を返すときにコピーが発生するのでコピーコンストラクタが必要 (だけど実際には無い) ということになってしまう。 解決方法としては load を呼ぶというのは妥当な方法のひとつだけど、 返却値として bool を明示する、つまり []->bool { return ready; } とするのでもよいし、 キャストを書いて [] { return static_cast<bool>(ready); } というようにするのでも良い。 見栄えからすると [] { return bool(ready); } のほうが綺麗かな? http://mevius.5ch.net/test/read.cgi/tech/1542002113/956
957: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/10/30(水) 15:17:53.47 ID:o3z0lAnP 色々と書いたけど、この場合について言えば変換に頼るよりは load を呼んだほうが意図が読み取りやすくて良いと思う。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/957
958: デフォルトの名無しさん [sage] 2024/10/30(水) 16:06:31.71 ID:kddcnuFp つーかこのコードだとreadyはatomicにする必要がない http://mevius.5ch.net/test/read.cgi/tech/1542002113/958
959: デフォルトの名無しさん [sage] 2024/11/03(日) 07:07:35.61 ID:LyKtE2MZ >>947です。皆さんどうもありがとうございました >>958 確かにそこは 実際、元のコードでも (>>951はサンプルコードがベース) 他の部分は適宜mutexを使ってあり、atomicを使わなくてもいいような、あるいは逆に mutexを使わずにatomicでいけるのかも、とか思ったりもしたのですが、 今回は最小限の変更で済ますことにしました http://mevius.5ch.net/test/read.cgi/tech/1542002113/959
960: デフォルトの名無しさん [sage] 2024/11/23(土) 23:49:52.60 ID:thI1occS std::anyを使っていて、type()の返す形によって処理を変えたいのですが、 今はこれを typeid(形) と比較するif-else文の繰り返しを書いています ググったら、hash_code()を使えばswitch文で書けるというのがあったのですが... 書けます? エラーでコンパイルできないんですが error: call to non-'constexpr' function 'std::size_t std::type_info::hash_code() const' http://mevius.5ch.net/test/read.cgi/tech/1542002113/960
961: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/11/24(日) 12:09:51.87 ID:3DfWckE7 >>960 「使えば」というのはどう使うという状況を言ってる? 具体的なコードを出して。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/961
962: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/11/24(日) 12:55:51.06 ID:3DfWckE7 >>960 switch の case ラベルに hash_code を使うという意味なら不可能。 case ラベルは定数 (定数式) であることを要求していて std::type_info::hash_code は constexpr が付いていないので結果は定数にならない。 コンパイル時計算するなんらかのハッシュ関数を用意すれば一応はなんとかならんでもないが……。 余興の類であって普通のテクニックとは言い難い。 そもそも std::any が不格好な仕組みなので std::any を使う以上は不格好になることを受け入れないと仕方がないと思う。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/962
963: 1 [] 2024/12/14(土) 02:53:40.88 ID:Bddn5MUb なに?プログラムって。むつかしそうだなー ぜんぜん知らないんだけど、ちょっとやってみたいなー ってな人も、入れてあげてね。 そういうスレなんだから。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/963
964: デフォルトの名無しさん [sage] 2024/12/14(土) 14:30:51.75 ID:TQJHLK8K そうしたければお前がやるんだよ 他人に期待すんな こっちは気が向いたら好きに回答するだけ あと過度な自治厨は嫌われるからな http://mevius.5ch.net/test/read.cgi/tech/1542002113/964
965: デフォルトの名無しさん [sage] 2024/12/16(月) 20:29:27.83 ID:lHJTCZF8 人がいないからって、 お題を完全に無視して自分勝手 寄ってこようかとする何も知らない人は、 怖くて寄り付けないよ http://mevius.5ch.net/test/read.cgi/tech/1542002113/965
966: デフォルトの名無しさん [] 2024/12/26(木) 15:20:00.18 ID:Max/6hcg 独習でc++の勉強しているのですがそろそろ終わり見えて来たんで終わる前に次の参考書ほしいのですがどんなのがいいのでしょうか? 現在の作りたいソフトがチューナーボードを利用したチャンネルスキャンや復調前の搬送波の保存をwinやLinuxで使える規格で作ってみたいと思っています。最終的にはそこから番組表とか自動構築できるところまでやってタイムシフトできるようにしてみたいと思ってます。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/966
967: デフォルトの名無しさん [sage] 2024/12/26(木) 15:41:38.20 ID:NWZL3CyL 基本わかったら作り始めたらいい チューナーボードのsdkのマニュアル読め 最初は出来損ないでいいから完成させろ http://mevius.5ch.net/test/read.cgi/tech/1542002113/967
968: デフォルトの名無しさん [sage] 2024/12/26(木) 22:37:43.96 ID:Bko97FmB lower_bound x以上で最小 upper_bound xより上で最小 upper_bound - 1 x以下で最大 は記述がありましたが lower_bound - 1をググってるのですが出てきません 多分x未満で最大だと思うのですがあってますか? http://mevius.5ch.net/test/read.cgi/tech/1542002113/968
969: デフォルトの名無しさん [sage] 2024/12/26(木) 23:19:55.33 ID:/ipDVGme + http://mevius.5ch.net/test/read.cgi/tech/1542002113/969
970: デフォルトの名無しさん [sage] 2024/12/26(木) 23:49:39.69 ID:ijj1Fuin >>968 サンプルコード書いて確かめなよ http://mevius.5ch.net/test/read.cgi/tech/1542002113/970
971: デフォルトの名無しさん [] 2024/12/27(金) 09:37:21.60 ID:O2xssw1P >>967 sdkのマニュアルとかないボードみたいなんでテレビ視聴用のテストソフトコード見ながら自分が欲しいもの書いてみます。 ところでvisual studio使ったことないのでわからないのですがこのソフトの書き方、読み方しっかり学べる本ってないでしょうか?今までテキストエディタで書いてg++でやってたからビルドとテストがあるぐらいしかわかりません。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/971
972: はちみつ餃子 ◆8X2XSCHEME [sage] 2024/12/27(金) 10:42:45.43 ID:sDceJMaF >>971 マイクロソフトのサイトを見ながら学習するのがよいと思う。 細かな部分はバージョンによっても変わるし、本を買ってもすぐ時代遅れになるから。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/972
973: デフォルトの名無しさん [sage] 2025/02/25(火) 14:39:59.78 ID:hnV+oLEs おちんちぇん http://mevius.5ch.net/test/read.cgi/tech/1542002113/973
974: デフォルトの名無しさん [sage] 2025/03/31(月) 15:48:05.05 ID:5n9vvRfi だいぶ遅レスですまんが、VSはブレークポイント入れるとか実行とかの基本的な操作は昔から全く変わってないよ 自分は職場で教わった部分もあるからどの本がいいとかはわからん http://mevius.5ch.net/test/read.cgi/tech/1542002113/974
975: デフォルトの名無しさん [] 2025/04/11(金) 08:37:40.21 ID:DDyd6LX4 え?お前らに聞くけどな人殺しとか前科者とかナマポとか精神障碍者とか そういう社会的に終わってる奴が1日中何してるか考えたことある? ない?ある?ない?どっち?え?ない?教えたるわ。ここや。こういう掲示板。 ありあまる時間を使って24時間悪口書いて文句垂れて世の中終わった終わった言うてる。 すでに終わってる奴が世の中終わってほしいから終わってる終わってる言うてるだけ。 気づけよ?お前ら。そろそろ。もう5ちゃんの平均年齢65歳ぐらいやぞ。 気付いてないのは団塊ジュニア。若者だらけと思ってるのは氷河期。 ゆとり以下は5ちゃんなんて見てないでもう。 しかも自分?もう文末にwとかwwwとか書くの古いで? それ20年前の電車男の時代に流行ってた書き方な。 うはwwwおkとか、ちょっwwwとか、おまwwwとか 気でも狂ってるんかってぐらいに書かれてた暗黒時代な。 こんなんいまだに使ってるのお前だけやで。もう一回言うぞ?お前だけや。 気付けよ?いい加減。な! あ?なに?このコピペ長文長い?お前が5ちゃんの2行3行レスしか読まない 人生を四半世紀(25年のことな)送ってて普通の文章読めんようになってるだけや! わかったか?じゃあの! http://mevius.5ch.net/test/read.cgi/tech/1542002113/975
976: デフォルトの名無しさん [sage] 2025/04/11(金) 13:09:16.48 ID:/8vt7NNX っ鏡 http://mevius.5ch.net/test/read.cgi/tech/1542002113/976
977: デフォルトの名無しさん [sage] 2025/04/18(金) 21:33:04.53 ID:2tfOuRHs C++なんてやめとけ 仕事で仕方なく触るならお気の毒だが 趣味ならもっとモダンな言語にしとけ http://mevius.5ch.net/test/read.cgi/tech/1542002113/977
978: デフォルトの名無しさん [sage] 2025/04/19(土) 00:29:20.64 ID:DSrU4IgO cppのあとc#やってみて思ったのは、cppはとにかくたくさん書く必要があるってこと。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/978
979: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/04/19(土) 10:45:36.30 ID:cJmAkIgz cpp は C preprocessor の略だよ。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/979
980: デフォルトの名無しさん [] 2025/04/19(土) 12:22:27.38 ID:MUEmr0y1 初代のC++はpreprocessorだったんですねわかります http://mevius.5ch.net/test/read.cgi/tech/1542002113/980
981: 警備員[Lv.1][新芽] [sage] 2025/04/19(土) 17:31:17.09 ID:FLUMnkWw プリプロセッサというか、Cへのトランスレータだったみたいよ http://mevius.5ch.net/test/read.cgi/tech/1542002113/981
982: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/04/19(土) 18:46:21.80 ID:cJmAkIgz >>981 いや、 C++ の前身である C with Classes の最初の処理系は Cpre と名付けられていて、明らかにプリプロセッサを指向してる。 このことじゃない? http://mevius.5ch.net/test/read.cgi/tech/1542002113/982
983: 警備員[Lv.5][新芽] [sage] 2025/04/19(土) 19:59:57.03 ID:nvjdNFmD >>982 かもしれません 30年以上前のうろ覚えなので http://mevius.5ch.net/test/read.cgi/tech/1542002113/983
984: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/04/19(土) 20:26:59.32 ID:cJmAkIgz C++ と呼ぶようになってからの処理系 CFront もそれはそれで思想としては C コンパイラをジェネレータとして使う (移植性が高いから) というものであって言語としての解釈は CFront がやるし C は中間表現にすぎないからトランスレータと呼ぶのが適切かどうかは微妙なところ。 Clang のことを LLVM-IR へのトランスレータとは普通は言わないみたいな感じ。 いや、変換してるからトランスレータには違いないんだろうけどさ。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/984
985: デフォルトの名無しさん [] 2025/04/19(土) 20:34:02.90 ID:Rs10e6Jw つまりNim最強ですねわかります http://mevius.5ch.net/test/read.cgi/tech/1542002113/985
986: デフォルトの名無しさん [sage] 2025/04/28(月) 09:51:37.89 ID:PR6E6U1X C++で匿名クラスを使ってみたいのですが、試したところ class { public: void print() { std::cout << "Hello!\n"; } } obj; obj.print() は動きました。それならば auto objp = new class { public: void print() { std::cout << "Hello!\n"; } } (); objp->print(); あたりが動くのかな、と思いましたがコンパイルでエラーになってしまいます anon_class_test.cpp:4:19: error: declaration of anonymous class must be a definition 4 | auto objp = new class { | ^ anon_class_test.cpp:7:7: error: expected a type 7 | } (); | ^ 正しい書き方があれば教えていただけないでしょうか? ちなみに、Java (Android)でのコールバックの登録であるような、インラインで無名の クラスのオブジェクトを定義・生成して渡すような書き方がC++でもできるのかな、 という疑問があり、それの第一歩的な感じなのですが http://mevius.5ch.net/test/read.cgi/tech/1542002113/986
987: デフォルトの名無しさん [sage] 2025/04/28(月) 10:00:18.82 ID:+jC2JIL+ 匿名クラスってCで言う構造体やん http://mevius.5ch.net/test/read.cgi/tech/1542002113/987
988: デフォルトの名無しさん [sage] 2025/04/28(月) 10:12:11.66 ID:RRBAM2hD >>986 newの後にクラス定義は書けない 匿名インラインでなんちゃらしたい場合はラムダを使う http://mevius.5ch.net/test/read.cgi/tech/1542002113/988
989: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/04/28(月) 12:35:00.60 ID:clGXfLYj >>986 簡潔な回答としては「できない」ということになる。 関数ひとつで終わるような簡単なコールバックならラムダ式で渡せるように設計する。 もう少し複雑なものになると……式の中に定義を書けるのは見通しが悪いし、出来てしまう Java のほうが良くなさそう。 別の場所 (といっても直前で良いけれど) で定義すれば何も困らないよ。 質問の本筋ではないが気になる点として、 new で生成したものはどこかで delete しなきゃならないからそのコードだけから判断できる範囲ではなんだか筋が悪そうに見える。 つまりそもそも new する意味がないんじゃない? と思う。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/989
990: デフォルトの名無しさん [sage] 2025/04/28(月) 13:12:28.38 ID:PR6E6U1X >>988 >>989 なるほど、ありがとうございます >>989 >別の場所 (といっても直前で良いけれど) で定義すれば何も困らないよ。 はい、それで行ってみようかとおもいます >new で生成したものはどこかで delete しなきゃならないから はい、そういうわけでshared_ptrで... そのためにも型の名前はあった方がいいですね 諸般の事情でJavaとC++のコードを間接的に共有しようとしていまして、 ならばコードのスタイルもできるだけ似せようかなと、思ったのでした http://mevius.5ch.net/test/read.cgi/tech/1542002113/990
991: デフォルトの名無しさん [sage] 2025/05/02(金) 09:24:43.58 ID:k5bGwZZ0 size_t を返す hoge.count() みたいなのがあって for(int i = hoge.count(); --i >= 0){...} と描くと 型が違うって怒られるのですが for(int i = (int)hoge.count(); --i >= 0){...} for(unsigned long i = (unsigned long)hoge.count(); --i >= 0){...} for(size_t i = hoge.count(); --i >= 0){...} どれが正解? http://mevius.5ch.net/test/read.cgi/tech/1542002113/991
992: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/05/02(金) 09:54:10.74 ID:LUc36ySD >>991 どこでどのように型が合わないのか説明して。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/992
993: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/05/02(金) 11:40:02.44 ID:n0wyIh3y >>991 for 文の括弧の中はセミコロンで区切られた三つの節を持つ形式である必要があるが、二つの節しかないのが根本的な間違い。 そんでそれを脇に置くとして、ループカウンタ i が unsigned であるときに --i >= 0 という式で判定しようとするのが間違い。 0 以下になることはありえないのだから判定の意味がない。 (無限ループを意図したのでない限りは。) 整数を別の整数型に型変換したときに型変換後の型で表現可能な範囲の値であるならば同じ数値のままであることは保証されて何も問題はない。 逆に言えば扱う値の範囲次第では違う数値に変わったり未定義になったりすることがある。 hoge.count() が返す型が size_t なら最後まで size_t で扱うのが基本的には好ましい。 値が取りうる範囲を把握しているなら問題を起こさない範囲で適切に型変換するのはプログラマの裁量による。 状況によって判断するしかない。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/993
994: デフォルトの名無しさん [sage] 2025/05/02(金) 12:05:12.81 ID:b7t9YOim 我慢できなくなって説明しちゃうはちみつさん http://mevius.5ch.net/test/read.cgi/tech/1542002113/994
995: デフォルトの名無しさん [sage] 2025/05/02(金) 19:42:35.68 ID:rPO248eK for(long long i = (long long)hoge.count(); --i >= 0; ){...} http://mevius.5ch.net/test/read.cgi/tech/1542002113/995
996: デフォルトの名無しさん [sage] 2025/05/04(日) 09:19:50.28 ID:RkNPiBO2 Rust使えばもっと楽になるかと思いきや 面倒が増えただけだったでござる http://mevius.5ch.net/test/read.cgi/tech/1542002113/996
997: デフォルトの名無しさん [sage] 2025/05/04(日) 10:01:55.29 ID:CPTw2I9A >size_t を返す hoge.count() みたいなのがあって >for(int i = hoge.count(); --i >= 0){...} Rustなら単に (0..hoge.count()).rev() http://mevius.5ch.net/test/read.cgi/tech/1542002113/997
998: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/05/04(日) 11:51:46.75 ID:w7r9Yiaa 全体としては Rust のほうがだいぶん楽だと思うけどなぁ。 好みや慣れの要素があるから単純には比較できないのだけれど。 http://mevius.5ch.net/test/read.cgi/tech/1542002113/998
999: デフォルトの名無しさん [sage] 2025/05/04(日) 11:59:34.01 ID:RkNPiBO2 はちみつさんもRust使ってるんだね http://mevius.5ch.net/test/read.cgi/tech/1542002113/999
1000: デフォルトの名無しさん [] 2025/05/04(日) 11:59:44.18 ID:RkNPiBO2 かわいい http://mevius.5ch.net/test/read.cgi/tech/1542002113/1000
1001: 1001 [] ID:Thread このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 2364日 21時間 4分 32秒 http://mevius.5ch.net/test/read.cgi/tech/1542002113/1001
1002: 1002 [] ID:Thread 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《UPLIFT会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 4 USD/mon. から匿名でご購入いただけます。 ▼ UPLIFT会員登録はこちら ▼ https://uplift.5ch.net/ ▼ UPLIFTログインはこちら ▼ https://uplift.5ch.net/login http://mevius.5ch.net/test/read.cgi/tech/1542002113/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s