C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part150
https://mevius.5ch.net/test/read.cgi/tech/1584975873/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
テンプレここまで
探検
C++相談室 part151
■ このスレッドは過去ログ倉庫に格納されています
2020/05/14(木) 11:53:25.59ID:ZPCfyTux
592デフォルトの名無しさん
2020/06/25(木) 19:34:45.97ID:aCPUEpAO ライブラリ作ったこと無いのかな?
593デフォルトの名無しさん
2020/06/25(木) 19:36:15.68ID:g2od3l7G いや、はじめからバイナリ互換させる前提で設計したライブラリでもない限り、小手先の対応でなんとかなる場面は物凄い限られるよ
594デフォルトの名無しさん
2020/06/25(木) 19:38:38.17ID:aCPUEpAO >>593
それは互換性を保つ技術が無いから
それは互換性を保つ技術が無いから
595デフォルトの名無しさん
2020/06/25(木) 19:41:06.01ID:aCPUEpAO メモリアラインメント調整等で発生する隙間を集めて変数として使う
っていう手もある
データ構造互換だとよくやる手法
っていう手もある
データ構造互換だとよくやる手法
596デフォルトの名無しさん
2020/06/25(木) 19:41:55.04ID:L+/QiPNH597デフォルトの名無しさん
2020/06/25(木) 19:42:42.30ID:g2od3l7G バイナリ互換前提で開発されていないから、問題が出ているんじゃないの?
appがコンパイルされた時点で、デストラクタやらコピコンやら代入やらをすべて明示的に外部定義していないと、コード中で必要に応じてデフォルトが呼ばれて、当然inline化もされてしまう
appがコンパイルされた時点で、デストラクタやらコピコンやら代入やらをすべて明示的に外部定義していないと、コード中で必要に応じてデフォルトが呼ばれて、当然inline化もされてしまう
598デフォルトの名無しさん
2020/06/25(木) 19:43:40.85ID:jUSiql3P599デフォルトの名無しさん
2020/06/25(木) 19:44:07.37ID:aCPUEpAO600デフォルトの名無しさん
2020/06/25(木) 19:45:52.88ID:aCPUEpAO ライブラリを作った事がないヤツが
ライブラリの互換性についてアドバイスしようとしてて笑える
ライブラリの互換性についてアドバイスしようとしてて笑える
601デフォルトの名無しさん
2020/06/25(木) 19:47:42.56ID:g2od3l7G ?
ライブラリ作ったことあるからこその内容だろうに
GCするとか、リークしたままOSに回収させるとかそれこそライブラリとしてあり得ない対応だろう
ライブラリ作ったことあるからこその内容だろうに
GCするとか、リークしたままOSに回収させるとかそれこそライブラリとしてあり得ない対応だろう
602デフォルトの名無しさん
2020/06/25(木) 19:51:39.44ID:aCPUEpAO なんでデストラクタがインラインだと思うんだ?
603デフォルトの名無しさん
2020/06/25(木) 19:55:22.62ID:g2od3l7G デフォルトだとinlineのデストラクタが生成されるのがc++の仕様だろ
じゃないと単なるプレーンな構造体でもデストラクタの呼び出しするはめになる
じゃないと単なるプレーンな構造体でもデストラクタの呼び出しするはめになる
604デフォルトの名無しさん
2020/06/25(木) 20:01:17.97ID:aCPUEpAO クラスをライブラリ化するのにメンバ関数がインライン?
ご冗談を
ご冗談を
605デフォルトの名無しさん
2020/06/25(木) 20:02:21.68ID:aCPUEpAO デストラクタがインラインなら>>595
606デフォルトの名無しさん
2020/06/25(木) 20:05:18.94ID:g2od3l7G バイナリ互換想定してないなら、inlineしない方が稀じゃね
全部外部定義だと、高速化の妨げになるじゃないか
世の中のc++用ライブラリを見てみれば良いさ
inlineが無いどころかheader onlyが幅を利かせている
全部外部定義だと、高速化の妨げになるじゃないか
世の中のc++用ライブラリを見てみれば良いさ
inlineが無いどころかheader onlyが幅を利かせている
607デフォルトの名無しさん
2020/06/25(木) 20:08:52.95ID:g2od3l7G alignmentサイズの隙間に入れたところで、コピーの時にコピーされるかどうかも不明
と言うか、単体だとまずされない
まあコピーも外部定義されていれば置き換え可能だけど
と言うか、単体だとまずされない
まあコピーも外部定義されていれば置き換え可能だけど
608デフォルトの名無しさん
2020/06/25(木) 20:10:03.10ID:L+/QiPNH >>599
そもそもバイナリ互換を考慮していないライブラリを今さら何とかしようとするウンコな発想ありきだからな。
まともなライブラリ実装者なら
「そんなクソとっとと便所に流してマトモなもの作り直せ」
としか言わんわ。
そもそもバイナリ互換を考慮していないライブラリを今さら何とかしようとするウンコな発想ありきだからな。
まともなライブラリ実装者なら
「そんなクソとっとと便所に流してマトモなもの作り直せ」
としか言わんわ。
609デフォルトの名無しさん
2020/06/25(木) 20:11:42.55ID:Y+MR3z5H >>606
テンプレートだろそれ
テンプレートだろそれ
610デフォルトの名無しさん
2020/06/25(木) 20:13:29.88ID:Y+MR3z5H >>607
コピーもインライン前提か?
コピーもインライン前提か?
611デフォルトの名無しさん
2020/06/25(木) 20:14:36.46ID:g2od3l7G inlineじゃないtemplateのヘッダオンリーでも、バイナリ互換保つの無理だよね
例えinline化されてなくても、各obj内で実体化されたtemplate関数が同一じゃないと何が起こっても文句言えない
例えinline化されてなくても、各obj内で実体化されたtemplate関数が同一じゃないと何が起こっても文句言えない
612デフォルトの名無しさん
2020/06/25(木) 20:15:41.12ID:g2od3l7G 明示的なinlineもだけど、定義せずコンパイラに任せた場合デフォルトで出来るものはinline扱いになる
613デフォルトの名無しさん
2020/06/25(木) 20:16:21.51ID:Y+MR3z5H なんでobj?
ライブラリっていってるんだからlibだろ
ライブラリっていってるんだからlibだろ
614デフォルトの名無しさん
2020/06/25(木) 20:18:38.89ID:g2od3l7G libはobjの集合だろうに
615デフォルトの名無しさん
2020/06/25(木) 20:19:42.46ID:Y+MR3z5H インライン混じりのライブラリ
ならメンバ変数を増やすのを心配する以前だろ
問題が変わってる
ならメンバ変数を増やすのを心配する以前だろ
問題が変わってる
616デフォルトの名無しさん
2020/06/25(木) 20:27:59.07ID:Y+MR3z5H >>611
だからヘッダは基本変更しない
だからヘッダは基本変更しない
617デフォルトの名無しさん
2020/06/25(木) 20:29:04.78ID:iE0yhaVV どうしても必要なことなら、
ライブラリの中にスタティックな連想配列置いて、thisアドレスをキーにして追加したいメンバ変数引くようにしたら?
トリッキーでないし確実に動く
ライブラリの中にスタティックな連想配列置いて、thisアドレスをキーにして追加したいメンバ変数引くようにしたら?
トリッキーでないし確実に動く
618デフォルトの名無しさん
2020/06/25(木) 20:29:54.44ID:g2od3l7G コピーされなきゃ良いよね
619デフォルトの名無しさん
2020/06/25(木) 20:30:23.57ID:g2od3l7G vectorで持たれてても再配置されたら困るし
620デフォルトの名無しさん
2020/06/25(木) 20:32:18.93ID:Y+MR3z5H621デフォルトの名無しさん
2020/06/25(木) 20:34:29.24ID:Y+MR3z5H 何の互換性を保ちたいのかわからなくなってきた
622デフォルトの名無しさん
2020/06/25(木) 20:42:06.05ID:N8mY4JDD 同感
623デフォルトの名無しさん
2020/06/25(木) 21:13:19.28ID:Y+MR3z5H ライブラリを使う(一部の)コードはコンパイル済みでリコンパイル出来ない
コンパイル済みのコード内で使ってるクラスのメンバ変数を追加したい
当然
クラスのサイズは変えられないし
コンパイル済みのコード内の(インライン展開されてる)関数も変えられない
どの関数がコンパイル済みコード内にあって
どの関数がライブラリ内にあるかは不明
コンパイル済みのコード内で使ってるクラスのメンバ変数を追加したい
当然
クラスのサイズは変えられないし
コンパイル済みのコード内の(インライン展開されてる)関数も変えられない
どの関数がコンパイル済みコード内にあって
どの関数がライブラリ内にあるかは不明
624デフォルトの名無しさん
2020/06/25(木) 21:14:06.17ID:Y+MR3z5H こんな感じ?
625デフォルトの名無しさん
2020/06/25(木) 21:25:58.94ID:GV91Na/E ほとんど読んでないけどID:aCPUEpAOとID:Y+MR3z5Hがド素人なのはわかった
626デフォルトの名無しさん
2020/06/25(木) 21:27:27.39ID:Y+MR3z5H はいはいwww
627デフォルトの名無しさん
2020/06/25(木) 21:32:36.99ID:GV91Na/E ヘッダの変更無しにどうやって新しい機能追加すんだよ
628デフォルトの名無しさん
2020/06/25(木) 21:39:56.91ID:Y+MR3z5H 機能を追加したいなんて言ってたか?
629デフォルトの名無しさん
2020/06/25(木) 21:40:05.85ID:GV91Na/E630デフォルトの名無しさん
2020/06/25(木) 21:46:21.80ID:Y+MR3z5H なにそのド素人発言
631デフォルトの名無しさん
2020/06/25(木) 21:47:56.11ID:GV91Na/E >>610,613,615
632デフォルトの名無しさん
2020/06/25(木) 21:49:41.84ID:GV91Na/E インスタンスで扱ってるなら暗黙定義された関数の動作が変わる可能性くらいすぐ気づけやド素人が
633デフォルトの名無しさん
2020/06/25(木) 21:58:47.71ID:W+LR7rOf ポインタで扱うとインライン関数がリコンパイル無しで変えられるって?
634デフォルトの名無しさん
2020/06/25(木) 22:01:17.65ID:W+LR7rOf ライブラリなんだから
メンバ関数は全てライブラリ側で実装するだろ普通
テンプレートとか別途リンクが不要なことが売りなライブラリならともかく
何のためのライブラリだか
メンバ関数は全てライブラリ側で実装するだろ普通
テンプレートとか別途リンクが不要なことが売りなライブラリならともかく
何のためのライブラリだか
636デフォルトの名無しさん
2020/06/25(木) 22:06:38.78ID:Q7o8gz5q てかこの要件だと>>617ですでに答え出てる気がする
637デフォルトの名無しさん
2020/06/25(木) 22:06:48.48ID:W+LR7rOf 案を出せない人間が何を言っても負け犬の遠吠え
638デフォルトの名無しさん
2020/06/25(木) 22:09:27.67ID:W+LR7rOf639デフォルトの名無しさん
2020/06/25(木) 22:11:36.08ID:W+LR7rOf640デフォルトの名無しさん
2020/06/25(木) 22:14:20.52ID:Q7o8gz5q641デフォルトの名無しさん
2020/06/25(木) 22:15:15.45ID:Q7o8gz5q642デフォルトの名無しさん
2020/06/25(木) 22:16:59.09ID:W+LR7rOf 外部から直接アクセスしない変数を置き換えるに決まってるたろ
連想配列だと
初期化順とかスレッド安全とかパフォーマンスとか
色々と心配だねえ
連想配列だと
初期化順とかスレッド安全とかパフォーマンスとか
色々と心配だねえ
643デフォルトの名無しさん
2020/06/25(木) 22:20:39.99ID:lze6mCYp644デフォルトの名無しさん
2020/06/25(木) 22:20:56.12ID:W+LR7rOf645デフォルトの名無しさん
2020/06/25(木) 22:26:37.67ID:Q7o8gz5q646デフォルトの名無しさん
2020/06/25(木) 22:26:45.54ID:W+LR7rOf647デフォルトの名無しさん
2020/06/25(木) 22:29:26.54ID:Q7o8gz5q 何言ってんだこいつ
648デフォルトの名無しさん
2020/06/25(木) 22:29:51.27ID:W+LR7rOf コンストラクタはインラインでも>>572で問題ないね
649デフォルトの名無しさん
2020/06/25(木) 22:35:32.05ID:W+LR7rOf650デフォルトの名無しさん
2020/06/25(木) 22:36:49.66ID:W+LR7rOf >>643じゃなかった
連想配列案
連想配列案
651デフォルトの名無しさん
2020/06/25(木) 22:47:52.28ID:Q7o8gz5q インラインじゃないならって、普通コンパイルオプションやnoinlineで指定してない限り、
実装が見えているメンバ関数は全てインライン展開はされうるんだぞ
そんな厳しい前提がOKなら>>645で言ったdeleteの問題だって対処できる
実装が見えているメンバ関数は全てインライン展開はされうるんだぞ
そんな厳しい前提がOKなら>>645で言ったdeleteの問題だって対処できる
652デフォルトの名無しさん
2020/06/25(木) 22:50:51.97ID:W+LR7rOf653デフォルトの名無しさん
2020/06/25(木) 22:54:30.29ID:W+LR7rOf >>651
ヘッダにない関数はインラインにしようがない
ヘッダにない関数はインラインにしようがない
654デフォルトの名無しさん
2020/06/25(木) 22:59:14.54ID:W+LR7rOf655デフォルトの名無しさん
2020/06/25(木) 23:01:53.27ID:W+LR7rOf デストラクタ問題に対応出来るのは今のところ>>595だけ
656デフォルトの名無しさん
2020/06/25(木) 23:05:32.49ID:Q7o8gz5q657デフォルトの名無しさん
2020/06/25(木) 23:06:38.16ID:Q7o8gz5q658デフォルトの名無しさん
2020/06/25(木) 23:11:48.74ID:W+LR7rOf659デフォルトの名無しさん
2020/06/25(木) 23:23:27.92ID:W+LR7rOf コンテナやスマポなど、コピーやデストラクタで処理される物の中身を少し大きくするとか
close()みたいな最後に必ず呼ばれる関数があればそこに入れ込むとか
中身がわかればもっと別の案も出るかも
close()みたいな最後に必ず呼ばれる関数があればそこに入れ込むとか
中身がわかればもっと別の案も出るかも
660デフォルトの名無しさん
2020/06/25(木) 23:30:07.30ID:W+LR7rOf >>656
速度が必要と書いてなければ速度無視が前提って...
なかなか衝撃発言ですねえ
C++なんだから組み込みのチープ環境かもしれないし
リアルタイム処理かもしれないし
もしかしたらISR内部かも
(ISRならnewも問題になるか)
速度がどうでもいい用途でいまだにC++を使うって
どんな業界かな?
速度が必要と書いてなければ速度無視が前提って...
なかなか衝撃発言ですねえ
C++なんだから組み込みのチープ環境かもしれないし
リアルタイム処理かもしれないし
もしかしたらISR内部かも
(ISRならnewも問題になるか)
速度がどうでもいい用途でいまだにC++を使うって
どんな業界かな?
661デフォルトの名無しさん
2020/06/25(木) 23:34:58.25ID:Q7o8gz5q ほんとにド素人だな・・・呆れた
662デフォルトの名無しさん
2020/06/25(木) 23:41:46.09ID:W+LR7rOf 負け宣言?
雑魚が
雑魚が
664デフォルトの名無しさん
2020/06/26(金) 07:52:12.45ID:UtOMuHDg 不変のアブストラクトクラスを作っておいて
実装はそこの派生クラスでやり
使用者はポインタで使う
実装はそこの派生クラスでやり
使用者はポインタで使う
666デフォルトの名無しさん
2020/06/26(金) 20:05:18.50ID:jgcbTaF5 糞コテ集合
667デフォルトの名無しさん
2020/06/26(金) 22:39:47.73ID:2sQMfeSo あと蟻人間とかいうやつが揃えばジャックポット
668デフォルトの名無しさん
2020/06/26(金) 22:59:40.41ID:ReyCZ0Ra よーし、みんな呼んじゃうゾ
void君、rubyガイジ、jquery房ーっ
void君、rubyガイジ、jquery房ーっ
669デフォルトの名無しさん
2020/06/27(土) 00:11:14.27ID:rOaH6R8n 蟻ははちみつが大好き。
ハチとアリは同属。
ハチとアリは同属。
670デフォルトの名無しさん
2020/06/27(土) 03:40:34.85ID:W+OG+j+5 ∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
671デフォルトの名無しさん
2020/06/27(土) 03:55:34.00ID:aqzZKmXR 心底どうでもいい
672デフォルトの名無しさん
2020/06/27(土) 10:40:14.09ID:rOaH6R8n 片山右京
673デフォルトの名無しさん
2020/06/27(土) 13:08:47.90ID:5dDNakqG 杉下右京
674デフォルトの名無しさん
2020/06/27(土) 14:16:45.56ID:rOaH6R8n 博文
675デフォルトの名無しさん
2020/06/27(土) 22:55:32.89ID:XmSaDv1W 今時のmodern c++で、マルチスレッドやるにはどうすればいいでしょうか。とりあえず今はC++17でコンパイルしてますが
1.c++20のコルーチンとコールチンライブラリを使う
2.固定スレッド数のスレッドプールなら簡単に実装できるので自分で実装、もしくは素敵なライブラリがある?
3.std::thread,std::asyncでいいや
1.c++20のコルーチンとコールチンライブラリを使う
2.固定スレッド数のスレッドプールなら簡単に実装できるので自分で実装、もしくは素敵なライブラリがある?
3.std::thread,std::asyncでいいや
677デフォルトの名無しさん
2020/06/27(土) 23:00:22.36ID:XmSaDv1W とりあえず、MSVCを使ってます
1は時期尚早?
2はMSVCだとTask Parallel Libraryがあるけど、プライオリティキューを使いたいとなるとやっぱ自前?
3はね
皆さんはどんな感じでしょうか
1は時期尚早?
2はMSVCだとTask Parallel Libraryがあるけど、プライオリティキューを使いたいとなるとやっぱ自前?
3はね
皆さんはどんな感じでしょうか
678デフォルトの名無しさん
2020/06/27(土) 23:06:40.51ID:TsX0h7IG マルチスレッドやる
がわからん
何をしたいの?
がわからん
何をしたいの?
679デフォルトの名無しさん
2020/06/27(土) 23:10:16.30ID:XmSaDv1W タスクの実行を(優先順位付きで)スケジュールしたり、キャンセルしたりしたいです
非同期処理?
なんてイエバいいのだろう
非同期処理?
なんてイエバいいのだろう
680デフォルトの名無しさん
2020/06/27(土) 23:12:59.91ID:TsX0h7IG 環境は?
681デフォルトの名無しさん
2020/06/27(土) 23:14:55.69ID:XmSaDv1W MSVCのWindowsアプリです
682デフォルトの名無しさん
2020/06/27(土) 23:24:28.13ID:TsX0h7IG MFC
Windows API
std::thread
どれでも出来るけど
求めるものは?
性能?作りやすさ?移植性?
Windows API
std::thread
どれでも出来るけど
求めるものは?
性能?作りやすさ?移植性?
683デフォルトの名無しさん
2020/06/27(土) 23:26:07.41ID:XmSaDv1W まぁ、windowsにはwin32でthread pool apiがあったり、ATLでCThreadPoolクラスみたいのがあるっぽいんですが、昔より今時の方法で..
性能はあんま気にしてません
作りやすさですね
性能はあんま気にしてません
作りやすさですね
684デフォルトの名無しさん
2020/06/27(土) 23:26:45.37ID:TsX0h7IG 普通に自作すれば?
仕様を好み通りに出来る
仕様を好み通りに出来る
685デフォルトの名無しさん
2020/06/27(土) 23:29:23.19ID:XmSaDv1W 性能はあんま気にしてませんが、テスト的にstd::threadで今は実装してますが、セマフォなりで全く制御してないのでCPU使用率がはねあがって、セマフォで制御するくらいならスレッドプールくらいは導入したいなと
686デフォルトの名無しさん
2020/06/27(土) 23:35:09.74ID:XmSaDv1W687デフォルトの名無しさん
2020/06/27(土) 23:51:55.88ID:IY07Q1dO msvcならasync使えばthread pool使われてたような
async|deferredでは問題ないけど、asyncのみだと仕様的にアウトっぽいから将来的に修正されるかもしれんが
async|deferredでは問題ないけど、asyncのみだと仕様的にアウトっぽいから将来的に修正されるかもしれんが
688デフォルトの名無しさん
2020/06/27(土) 23:55:27.13ID:TsX0h7IG プライオリティキュー
自体を既に使ってるなら
待つ仕組みだけ追加すれば良いのでは?
自体を既に使ってるなら
待つ仕組みだけ追加すれば良いのでは?
689デフォルトの名無しさん
2020/06/27(土) 23:58:18.31ID:TsX0h7IG while (1){
イベント待ち
イベントクリア
キューから取得
処理
}
----
キューに追加
イベントセット
イベント待ち
イベントクリア
キューから取得
処理
}
----
キューに追加
イベントセット
690デフォルトの名無しさん
2020/06/28(日) 00:14:46.55ID:En8ZMxKR691デフォルトの名無しさん
2020/06/28(日) 00:19:31.12ID:BWJrAYP0 while (1){
イベント待ち
イベントクリア
while (キューから取得){
処理
}
}
----
キューに追加
イベントセット
イベント待ち
イベントクリア
while (キューから取得){
処理
}
}
----
キューに追加
イベントセット
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- ぶっちゃけ天のうって昭和天のうのせいで全然ありがたみないよな
- 頭悪いやつほどガンダムとかエヴァにハマるのってなんでなの?
- 犬って顔くっつけて寝たがるよな
- ゲームボーイのゲーム
- 『猟友会がクマ駆除を嫌がるなら潰すべき。職務を放棄するハンターから免許や銃を没収して罰金を取ろう』の声、ネットで上がる [932029429]
