前スレ
C++相談室 part160
https://mevius.5ch.net/test/read.cgi/tech/1649979572/
探検
C++相談室 part161
■ このスレッドは過去ログ倉庫に格納されています
2022/05/21(土) 21:23:29.59ID:kYXfaM+5
252デフォルトの名無しさん
2022/06/17(金) 19:29:48.79ID:SEHo94h9 いや、たしかにC++プロジェクトやぞ
数年前から使ってるVSプロジェクトではC++14→ビルド通る、C++17→ビルド通る、C++20→エラー
今新規で作ったVSプロジェクトではC++14→エラー、C++17→エラー、C++20→エラー
意味フすぎて漏れそう
https://docs.microsoft.com/ja-jp/cpp/dotnet/for-each-in?view=msvc-170
調べたらfor each構文は非推奨とは出てきたけど
ほならね、コードスニペットで非推奨の構文出すなやと言いたい
しかもそれでビルド通らねえ
まあVSアプデが原因っぽい感じするし、大人しく推奨の構文使うようにするよ
お騒がせしてスマソ
数年前から使ってるVSプロジェクトではC++14→ビルド通る、C++17→ビルド通る、C++20→エラー
今新規で作ったVSプロジェクトではC++14→エラー、C++17→エラー、C++20→エラー
意味フすぎて漏れそう
https://docs.microsoft.com/ja-jp/cpp/dotnet/for-each-in?view=msvc-170
調べたらfor each構文は非推奨とは出てきたけど
ほならね、コードスニペットで非推奨の構文出すなやと言いたい
しかもそれでビルド通らねえ
まあVSアプデが原因っぽい感じするし、大人しく推奨の構文使うようにするよ
お騒がせしてスマソ
253デフォルトの名無しさん
2022/06/17(金) 19:38:58.95ID:bL392TY5254デフォルトの名無しさん
2022/06/17(金) 19:41:36.72ID:bL392TY5255デフォルトの名無しさん
2022/06/17(金) 19:48:56.19ID:sTQyUMOv >>254
両方使えるって書いてあるけど
> この非標準のキーワードは、C++/CLI プロジェクトと C++ ネイティブ プロジェクトの両方で使用できます。 ただし、これを使用することはお勧めしません。
両方使えるって書いてあるけど
> この非標準のキーワードは、C++/CLI プロジェクトと C++ ネイティブ プロジェクトの両方で使用できます。 ただし、これを使用することはお勧めしません。
256はちみつ餃子 ◆8X2XSCHEME
2022/06/17(金) 19:50:56.98ID:Ic1RtTnb >>246
「江添亮のC++入門」は比較的ハードルが低く基礎を理解できるように書かれてると思う。
(別途学習する前提で継承まわりをごっそりと省いたりしてるけど……)
元になった原稿は無料で公開されてて、 Markdown で書かれているので
適当なツールを使えば Kindle で読める形式にもできるんじゃないかな。
「江添亮のC++入門」は比較的ハードルが低く基礎を理解できるように書かれてると思う。
(別途学習する前提で継承まわりをごっそりと省いたりしてるけど……)
元になった原稿は無料で公開されてて、 Markdown で書かれているので
適当なツールを使えば Kindle で読める形式にもできるんじゃないかな。
257デフォルトの名無しさん
2022/06/17(金) 19:59:43.68ID:SEHo94h9 >>254
コード読めるのに文章読めないの?
コード読めるのに文章読めないの?
258デフォルトの名無しさん
2022/06/17(金) 20:05:32.50ID:wjEVmEJW C++/CLIはC++20で見捨てられてるので強制的にC++17としてコンパイルされる
昔から使ってるvcxprojなら知らん間に追加のオプションつけてたり、今のVSで規定値が変わったりしてるだろうからビルドが通らないのもありうる。
ちょっとしたプログラムならwandboxとかでgcc/clang試してみてもいいんじゃない?
MSVCは独自拡張とか、標準ライブラリでも新しいバージョンのものを先行実装してたりするよ
昔から使ってるvcxprojなら知らん間に追加のオプションつけてたり、今のVSで規定値が変わったりしてるだろうからビルドが通らないのもありうる。
ちょっとしたプログラムならwandboxとかでgcc/clang試してみてもいいんじゃない?
MSVCは独自拡張とか、標準ライブラリでも新しいバージョンのものを先行実装してたりするよ
259はちみつ餃子 ◆8X2XSCHEME
2022/06/17(金) 20:06:26.13ID:Ic1RtTnb MSVC を使ってないからよう知らんけど拡張を抑制するオプションとかないの?
260デフォルトの名無しさん
2022/06/17(金) 20:22:45.13ID:k/CpGzsk C++/CLIはC++ではないのだよ!
261デフォルトの名無しさん
2022/06/17(金) 20:37:27.17ID:2abskYGH 日本語読めない奴が多いなしかし
262デフォルトの名無しさん
2022/06/17(金) 23:05:28.99ID:nJOnHnXa C++/CLI捨てられちゃうのか
じゃあ今後C#とかとのグルーには何使えばいいの?
じゃあ今後C#とかとのグルーには何使えばいいの?
263デフォルトの名無しさん
2022/06/17(金) 23:21:00.48ID:cGGfCEhk 漢は黙ってP/Invoke
264デフォルトの名無しさん
2022/06/17(金) 23:39:45.06ID:OGNvxC9Z 中国人じゃない人はどうすればいいですか?
265デフォルトの名無しさん
2022/06/17(金) 23:43:23.56ID:+i8GyaaY 中国人に非ずば人に非ず。
266デフォルトの名無しさん
2022/06/17(金) 23:57:35.61ID:OGNvxC9Z PCREやbregonig.dllなどのPerl互換正規表現ライブラリでは、日本の漢字と中国の汉字が同じ\p{Han}に一絡げにされてるから注意しなよ
267デフォルトの名無しさん
2022/06/18(土) 20:22:14.05ID:jYGrUTdl ユニコードだからってことじゃなくて?
268デフォルトの名無しさん
2022/06/19(日) 08:07:25.77ID:w/1mSXjt www.mercari.com/jp/search/?keyword=hr400p
こういう安い中古チューナ買って、Coinyをスカパープレミアム放送のICカード化して、
スカパープレミアムのチャンネル全部見れるし、USB HDDに録画フリー。
【avoCADO】 Coiny card Part4【仮想通貨】
https://mevius.5ch.net/test/read.cgi/avi/1640762750/
こういう安い中古チューナ買って、Coinyをスカパープレミアム放送のICカード化して、
スカパープレミアムのチャンネル全部見れるし、USB HDDに録画フリー。
【avoCADO】 Coiny card Part4【仮想通貨】
https://mevius.5ch.net/test/read.cgi/avi/1640762750/
269デフォルトの名無しさん
2022/06/19(日) 09:39:07.73ID:G0R2gGHa 誤爆かな
270デフォルトの名無しさん
2022/06/19(日) 15:42:17.20ID:pCkywCXr 夏休みの自由研究の成果を今ここに発表するのぜ、
2^(2^34)-1を計算するプログラムを最終的にオリジナルの9.26倍高速化すた、
↓↓↓先週のやつ↓↓↓
■ V3: ブロック6-step algorithm適用
https://ideone.com/rFCMy5
実行時間全体: 389.157479 sec
計算時間のみ: 185.163833 sec
↓↓↓先週のやつの改良版↓↓↓
■ V3.1: ブロック6-step algorithm適用、parallel for粒度変更(粗くした)+workメモリサイズ調整
https://ideone.com/dFjPXf
実行時間全体: 349.057446 sec
計算時間のみ: 151.493976 sec
計算時間のみ比較でオリジナルの9.26倍速、
2^(2^34)-1を計算するプログラムを最終的にオリジナルの9.26倍高速化すた、
↓↓↓先週のやつ↓↓↓
■ V3: ブロック6-step algorithm適用
https://ideone.com/rFCMy5
実行時間全体: 389.157479 sec
計算時間のみ: 185.163833 sec
↓↓↓先週のやつの改良版↓↓↓
■ V3.1: ブロック6-step algorithm適用、parallel for粒度変更(粗くした)+workメモリサイズ調整
https://ideone.com/dFjPXf
実行時間全体: 349.057446 sec
計算時間のみ: 151.493976 sec
計算時間のみ比較でオリジナルの9.26倍速、
271デフォルトの名無しさん
2022/06/19(日) 15:42:37.86ID:pCkywCXr 計測条件:
CPU: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
メモリ32 GB
OS: Windows 10 Pro 64 bit
コンパイラ: Visual Studio 2019でビルド(x64)
OpenMP 有効(omp_get_max_threads() == 8)
計算結果は最後(2^(2^34)-1)のみ出力
(↑ソースコードのSAVE_ITM_RESULTマクロ定義をコメントアウト。元に戻せば前と同じになる。)
CPU: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
メモリ32 GB
OS: Windows 10 Pro 64 bit
コンパイラ: Visual Studio 2019でビルド(x64)
OpenMP 有効(omp_get_max_threads() == 8)
計算結果は最後(2^(2^34)-1)のみ出力
(↑ソースコードのSAVE_ITM_RESULTマクロ定義をコメントアウト。元に戻せば前と同じになる。)
272デフォルトの名無しさん
2022/06/19(日) 15:44:13.95ID:pCkywCXr つなみに同じような調子で時間計測すると、(コードはV3.1のSHOW_CSM_TIMEを参照されたい、
■ V0: オリジナル
https://ideone.com/xSaa6x
実行時間全体: 1586.875607 sec
計算時間のみ: 1403.402228 sec
■ V1: C++書き換え版
https://ideone.com/oDgjXr (※ FIGとRADIXはそれぞれ5と100000に訂正
実行時間全体: 1611.894164 sec
計算時間のみ: 1421.579748 sec
■ V2: 倍速化(バッタフライ演算で書き直したやつ。OpenMP非使用
https://ideone.com/xHSzFD
実行時間全体: 622.790273 sec
計算時間のみ: 435.143622 sec
やったわ;;;
つまりV2はV0より3.23倍速く、V3.2はV0より9.26倍速いから2^8倍を達成したのであった、
■ V0: オリジナル
https://ideone.com/xSaa6x
実行時間全体: 1586.875607 sec
計算時間のみ: 1403.402228 sec
■ V1: C++書き換え版
https://ideone.com/oDgjXr (※ FIGとRADIXはそれぞれ5と100000に訂正
実行時間全体: 1611.894164 sec
計算時間のみ: 1421.579748 sec
■ V2: 倍速化(バッタフライ演算で書き直したやつ。OpenMP非使用
https://ideone.com/xHSzFD
実行時間全体: 622.790273 sec
計算時間のみ: 435.143622 sec
やったわ;;;
つまりV2はV0より3.23倍速く、V3.2はV0より9.26倍速いから2^8倍を達成したのであった、
273デフォルトの名無しさん
2022/06/19(日) 15:57:54.28ID:pCkywCXr じつはさらにL2キャッシュ利用帯域最大化版というのを作ってみたのやが
どうもV3と同等かやや遅くなるorz
■ V3.2: L2キャッシュ利用帯域最大化版
https://ideone.com/ig7PuU
実行時間全体: 399.591214 sec
計算時間のみ: 191.301385 sec
やっていることは、NをL2キャッシュサイズの1コア割り当て分の半分に収まる複素数の数、として、
巨大桁数のFFTを(2*N×N)桁のFFTに分解して個々の(2*N×N)桁のFFTを6-step algorithmで解いているのですだが
なんかコピーしつつ転置するの回数が増えるので速くならないみたい
あとV3.1が速かったりV3.2がEXPN_L2CHACHE_SZを18からいくら増やしてもそれ以上遅くならないのは
Intel(R) Smart CacheテクノロジーがL2キャッシュとL3キャッシュ間の帯域をうまいぐあいに有効活用してくれているっぽい
ここらになってくると詳細は調べようが無いので漏れもソフトウェアー呪術者にならざるおえない
どうもV3と同等かやや遅くなるorz
■ V3.2: L2キャッシュ利用帯域最大化版
https://ideone.com/ig7PuU
実行時間全体: 399.591214 sec
計算時間のみ: 191.301385 sec
やっていることは、NをL2キャッシュサイズの1コア割り当て分の半分に収まる複素数の数、として、
巨大桁数のFFTを(2*N×N)桁のFFTに分解して個々の(2*N×N)桁のFFTを6-step algorithmで解いているのですだが
なんかコピーしつつ転置するの回数が増えるので速くならないみたい
あとV3.1が速かったりV3.2がEXPN_L2CHACHE_SZを18からいくら増やしてもそれ以上遅くならないのは
Intel(R) Smart CacheテクノロジーがL2キャッシュとL3キャッシュ間の帯域をうまいぐあいに有効活用してくれているっぽい
ここらになってくると詳細は調べようが無いので漏れもソフトウェアー呪術者にならざるおえない
274デフォルトの名無しさん
2022/06/21(火) 20:57:53.90ID:MIxQo51/ そっか頑張ったね
275デフォルトの名無しさん
2022/06/21(火) 21:17:43.90ID:EegZBjzo 相変わらず漏れとか加齢臭するスラング使ってんのか
276デフォルトの名無しさん
2022/06/21(火) 21:26:26.57ID:5USpVKBQ 初老の漏れ易いジジイなんだろ
察して差し上げろ
察して差し上げろ
277デフォルトの名無しさん
2022/06/21(火) 23:41:17.67ID:Nd0elFbL 内容に関係のないクソみたいな指摘しかできないお前らも大概終わってるけどな
まあこんなとこじゃなくてブログとかSNSにまとめろよとは思う
まあこんなとこじゃなくてブログとかSNSにまとめろよとは思う
278デフォルトの名無しさん
2022/06/22(水) 00:04:15.50ID:nUS9+NCG ジジイだから周りのこととかスレの流れとか見えてないんだろう
前頭葉が加齢で萎縮して空気を読む能力が衰えたのかな
前頭葉が加齢で萎縮して空気を読む能力が衰えたのかな
279デフォルトの名無しさん
2022/06/22(水) 02:07:39.75ID:mxrPsC3u >>277
> 内容に関係のないクソみたいな指摘しかできない
ハァ?
文盲じゃなかったら本人だろコイツ
1の乗根じゃなくて整数環でFFTした方が誤差の意味でも速度の意味でも劇的に改善するって何度も指摘してるんだが
> 内容に関係のないクソみたいな指摘しかできない
ハァ?
文盲じゃなかったら本人だろコイツ
1の乗根じゃなくて整数環でFFTした方が誤差の意味でも速度の意味でも劇的に改善するって何度も指摘してるんだが
280デフォルトの名無しさん
2022/06/22(水) 03:38:43.09ID:y9JQQK81281デフォルトの名無しさん
2022/06/23(木) 16:48:56.08ID:gevVgEYw どうでもいい言葉尻に突っかかるやつ
若さを自慢したつもりになってるの?
尻の青さをバカにされてるだけだよ
若さを自慢したつもりになってるの?
尻の青さをバカにされてるだけだよ
282デフォルトの名無しさん
2022/06/23(木) 18:18:04.50ID:5dy8Tjxk プログラマの発言じゃないな
プログラムは1文字のタイプミスで全く違う挙動になるのだから
プログラムは1文字のタイプミスで全く違う挙動になるのだから
283デフォルトの名無しさん
2022/06/23(木) 18:26:17.60ID:rC+mT8P4 偶によくC++読み書き出来ない奴がレスしてるんだけどどっから湧いてきてんの
いよいよ Java のクラスライブラリを C++ に移植しようと思っていますが、需要はありますか?
そろそろ共通のクラスライブラリが確立されてもいいと思っているのですが、あまりそんな話がないのが不思議です
そろそろ共通のクラスライブラリが確立されてもいいと思っているのですが、あまりそんな話がないのが不思議です
285デフォルトの名無しさん
2022/06/23(木) 22:23:51.49ID:R7SBWA0E 需要あるのでよろしくお願いします
286デフォルトの名無しさん
2022/06/23(木) 22:27:04.30ID:YY1MWhdq がんばれ!
287デフォルトの名無しさん
2022/06/23(木) 22:59:01.86ID:lRxLFmXq stdやboostじゃ不足か?
288デフォルトの名無しさん
2022/06/23(木) 23:46:22.08ID:Q9NpIN8Z289デフォルトの名無しさん
2022/06/24(金) 00:00:51.28ID:KtheM8QT290デフォルトの名無しさん
2022/06/24(金) 00:02:46.32ID:KtheM8QT >>288
性能よりも、各言語で名前と機能の紐づけが共通することを優先します
性能よりも、各言語で名前と機能の紐づけが共通することを優先します
291デフォルトの名無しさん
2022/06/24(金) 00:17:55.81ID:0z9KCe6G Javaクラスどうこうよりもfinallyステートメントをどうするかなんでは
292デフォルトの名無しさん
2022/06/24(金) 10:21:14.00ID:ZX81zd9Z >>291
ああ、それ、ありましたね finally か、結構重たい課題ですね
ああ、それ、ありましたね finally か、結構重たい課題ですね
293デフォルトの名無しさん
2022/06/24(金) 10:44:21.40ID:K2we1Lar お願いですから名前は短くしてくださいね
294デフォルトの名無しさん
2022/06/24(金) 13:31:54.09ID:dbAYBMOA >>282
template <typename T> を template <class T> と書いただけでジジイ呼ばわりするようなもんだぞ
誰もtypoの話なんかしてない
あ、1人だけいるのかw
template <typename T> を template <class T> と書いただけでジジイ呼ばわりするようなもんだぞ
誰もtypoの話なんかしてない
あ、1人だけいるのかw
295デフォルトの名無しさん
2022/06/24(金) 14:41:08.15ID:frIgvkyi ?
typename と書く方が文法的に新しいの?
typename と書く方が文法的に新しいの?
296はちみつ餃子 ◆8X2XSCHEME
2022/06/24(金) 15:47:15.76ID:STd+R5JH297デフォルトの名無しさん
2022/06/24(金) 18:40:02.03ID:dbAYBMOA >>295
CでC89以前にK&R Cがあったように
C++でもC++98以前にARM C++があった
ISO限定で言うと餃子の言うようになるが
もっと遡るとtypenameは後からできたもので
ARM C++では<class T>という書き方しかできなかった
CでC89以前にK&R Cがあったように
C++でもC++98以前にARM C++があった
ISO限定で言うと餃子の言うようになるが
もっと遡るとtypenameは後からできたもので
ARM C++では<class T>という書き方しかできなかった
298デフォルトの名無しさん
2022/06/24(金) 21:00:22.61ID:VuV41aeC 三十年くらい前にC++primerだったかな?
「typenameとclassならclassのほうで書いとけ、
なぜならタイプ数が少ないから」
みたいに書いてるところがあって(半分ジョークなんだろうな)
最初にそれで刷り込まれてるからclassでしか書いたことない
「typenameとclassならclassのほうで書いとけ、
なぜならタイプ数が少ないから」
みたいに書いてるところがあって(半分ジョークなんだろうな)
最初にそれで刷り込まれてるからclassでしか書いたことない
299デフォルトの名無しさん
2022/06/24(金) 21:15:01.67ID:uqZOpMdD structと書くことも
300デフォルトの名無しさん
2022/06/24(金) 22:03:13.47ID:JvzMg+3d C++ってstaticメソッド継承されますっけ?
Parent.Hoge()ってChild.Hoge()としても呼べます?
あるスクリプト言語を使ってた時にどうやら継承されてなかったようで、言語ごとに違うのか気になりました
Parent.Hoge()ってChild.Hoge()としても呼べます?
あるスクリプト言語を使ってた時にどうやら継承されてなかったようで、言語ごとに違うのか気になりました
301デフォルトの名無しさん
2022/06/24(金) 22:13:15.23ID:zVbF8VlC はい。
302はちみつ餃子 ◆8X2XSCHEME
2022/06/24(金) 22:31:13.16ID:STd+R5JH 型引数は class と書いてあってもクラスに分類されない型 (スカラ型など) を受け取れるのでなんか変な気分ではあるな……。
それでも私は class キーワード派だけど。
それでも私は class キーワード派だけど。
303デフォルトの名無しさん
2022/06/24(金) 22:46:12.30ID:TGTBUWMm modern C++ designの著者は、ユーザー定義型のみを想定してる場合はclass,
組み込み型も想定してる場合はtypenameにしてると書いてたな
組み込み型も想定してる場合はtypenameにしてると書いてたな
304デフォルトの名無しさん
2022/06/24(金) 23:16:18.24ID:jv7PClvp 今はそういうのはコンセプトの仕事だからなあ
305デフォルトの名無しさん
2022/06/25(土) 10:55:48.71ID:23CjKpU2 >>300
private とか protected とか知ってるか
private とか protected とか知ってるか
306デフォルトの名無しさん
2022/06/25(土) 11:54:25.28ID:xaZtK0Rm private踏んだりしたらエラーメッセージ見れば済む話だと思うが
class継承のときのpublicつけ忘れでprivate扱いになるのはやらかしてそう
class C{
public: static void f(){}
};
class D : public C{};
int main(){D::f();}
class継承のときのpublicつけ忘れでprivate扱いになるのはやらかしてそう
class C{
public: static void f(){}
};
class D : public C{};
int main(){D::f();}
307デフォルトの名無しさん
2022/06/25(土) 12:22:32.29ID:UASxpJXI >>306
エラーにならんが、何が言いたい?
エラーにならんが、何が言いたい?
308デフォルトの名無しさん
2022/06/25(土) 13:43:07.60ID:xaZtK0Rm309デフォルトの名無しさん
2022/06/25(土) 13:45:13.45ID:KYOYlq4y static関係なくね?
310デフォルトの名無しさん
2022/06/25(土) 13:48:22.71ID:23CjKpU2 publicつけ忘れで
311デフォルトの名無しさん
2022/06/25(土) 13:49:20.71ID:23CjKpU2312デフォルトの名無しさん
2022/06/25(土) 17:46:22.26ID:x+PfXs9r >>279
数論変換はしばし待たれよ卿、
NTT有名素数modとしてよく使われるのは
998244353 = 2^23 * 119 + 1
やそうやがこれ単独では2^23桁で表せる数値までの計算しかできないことは確定的に明らか
10^5進数表記をとったとして2^(2^34)-1はで表して
1034331189 > 2^29 桁 >> 2^23桁
なのでストレートにやるとしたら足りないのであっる
一方Six-step algorithmを導入したらば2^15桁までのFFTで済むから、NTT化が射程に入ってくる
というわけで漏れは天才の判断としてまず1の累乗根のFFT×Six-step algorithmを
OpenMPで激速化することを極めんとしているわけや;;;
数論変換はしばし待たれよ卿、
NTT有名素数modとしてよく使われるのは
998244353 = 2^23 * 119 + 1
やそうやがこれ単独では2^23桁で表せる数値までの計算しかできないことは確定的に明らか
10^5進数表記をとったとして2^(2^34)-1はで表して
1034331189 > 2^29 桁 >> 2^23桁
なのでストレートにやるとしたら足りないのであっる
一方Six-step algorithmを導入したらば2^15桁までのFFTで済むから、NTT化が射程に入ってくる
というわけで漏れは天才の判断としてまず1の累乗根のFFT×Six-step algorithmを
OpenMPで激速化することを極めんとしているわけや;;;
313デフォルトの名無しさん
2022/06/25(土) 17:47:57.25ID:x+PfXs9r それと>>279の口ぶりでは数論変換にしたら桁違いに早くなるみたいに読めるが
double同士の掛け算2^15回分が
int64同士の掛け算2^15回分に高速化される程度であって現行のレコード145 秒が100 秒切れるようになるか
っていうとビミョー
はい論破、
double同士の掛け算2^15回分が
int64同士の掛け算2^15回分に高速化される程度であって現行のレコード145 秒が100 秒切れるようになるか
っていうとビミョー
はい論破、
314デフォルトの名無しさん
2022/06/25(土) 18:01:39.85ID:x+PfXs9r >>302の行間に書いてある通り、型引数意外の状況でだがtypenameキーワードが必要なケースが存在する
ていうかこれ↓
https://faithandbrave.hateblo.jp/entry/20080129/1201597743
逆に言うと
それ以外ならclassでええやん、、、
ていうかこれ↓
https://faithandbrave.hateblo.jp/entry/20080129/1201597743
逆に言うと
それ以外ならclassでええやん、、、
315デフォルトの名無しさん
2022/06/25(土) 18:04:28.52ID:x+PfXs9r316デフォルトの名無しさん
2022/06/25(土) 18:25:49.29ID:XIyeaAEp またくっさいチラ裏ジジイが湧いたのか
317デフォルトの名無しさん
2022/06/25(土) 18:35:28.83ID:x+PfXs9r ハイハイここは高尚なインターネッツでつね;;;
318デフォルトの名無しさん
2022/06/25(土) 19:23:01.22ID:/zwkJ/mi319デフォルトの名無しさん
2022/06/25(土) 20:46:58.51ID:JEWFr+UF >>317
相変わらず誤字を直せねーのな
相変わらず誤字を直せねーのな
320デフォルトの名無しさん
2022/06/25(土) 21:53:15.48ID:cTvyoIxe 次のセールってハロウィンなっちゃう?
321デフォルトの名無しさん
2022/06/25(土) 23:44:17.32ID:BChKe9nl 何の?
322デフォルトの名無しさん
2022/06/27(月) 01:22:11.44ID:lmKSzJyY steamかな
323デフォルトの名無しさん
2022/06/29(水) 12:39:09.60ID:CyBPFABm >>300
>C++ってstaticメソッド継承されますっけ?
継承と言うか「可視」ではある。
>Parent.Hoge()ってChild.Hoge()としても呼べます?
staticメンバを参照したい場合は、インスタンス・メンバとは書き方が違って、
Parent::Hoge() や Child::Hoge()
と書く。
でも微妙だな、Child::Hoge()で呼び出せるかどうか、実験の必要はある。
>C++ってstaticメソッド継承されますっけ?
継承と言うか「可視」ではある。
>Parent.Hoge()ってChild.Hoge()としても呼べます?
staticメンバを参照したい場合は、インスタンス・メンバとは書き方が違って、
Parent::Hoge() や Child::Hoge()
と書く。
でも微妙だな、Child::Hoge()で呼び出せるかどうか、実験の必要はある。
324デフォルトの名無しさん
2022/07/01(金) 12:57:20.10ID:Niu9C9y8 インスタンスからも static メソッドは呼び出せるよ
https://ideone.com/tpA9jy
https://ideone.com/tpA9jy
325デフォルトの名無しさん
2022/07/01(金) 14:54:49.17ID:oLSBM8mZ >>323
なぜ継承を可視と言い直すんだ?
なぜ継承を可視と言い直すんだ?
326デフォルトの名無しさん
2022/07/01(金) 14:57:39.83ID:to5rXuQ/ ヴァーチャンが使えないからだろ
327デフォルトの名無しさん
2022/07/03(日) 05:57:55.66ID:S0pZ0Csa C++コンパイラっていつからconst char*型引数がbool型引数に暗黙変換されるようになったんだ?
以下のような内容が警告なしでコンパイルできてしまうんだが
int foo(bool bar);
const char* ptr = "test";
foo(ptr);
以下のような内容が警告なしでコンパイルできてしまうんだが
int foo(bool bar);
const char* ptr = "test";
foo(ptr);
328デフォルトの名無しさん
2022/07/03(日) 07:53:18.35ID:K2/9xttr スカラ型がboolに暗黙変換できるのは太古から変わってない
int (*p)(bool) = foo;
std::cout << foo; //出力は「1」だがfooが1番地から開始ということではない
int (*p)(bool) = foo;
std::cout << foo; //出力は「1」だがfooが1番地から開始ということではない
329デフォルトの名無しさん
2022/07/03(日) 07:54:43.51ID:K2/9xttr pいらんかったな、わりいわりいw
330デフォルトの名無しさん
2022/07/04(月) 13:56:35.75ID:QZHaDXek みなさまこんにちわ!
暑い日が続きますが質問させてください。
namespace hoge
{
class foo
{
public;
void set(class member_ptr* arg){ptr=arg;}
private;
class member_ptr* ptr=nullptr;
};
}
という名前空間を作成し、それをmember_ptrが定義されているソース(およびヘッダー)ファイルで使用したいです。
ところがmember_ptr*をset()に渡したとき、「hoge::member_ptr*は member_ptr*と互換性がありません」というエラーが出てしまいsます。
名前空間をはずすorポインタ関連の記述をコメントアウトさせると普通に動作するので、大まかなコード自体は問題ないと思うのですが……
リインタプリットキャストも出来ず困り果てておりますが、名前空間内部のメンバにポインタは持たせない方がいいのでしょうか?
それとも名前空間での不完全クラスでの定義がまずいんでしょうか?
ほとほと困り果てております。
わかる方がいらっしゃいましたらお教えいただけれう゛ぁ……
先感謝!
暑い日が続きますが質問させてください。
namespace hoge
{
class foo
{
public;
void set(class member_ptr* arg){ptr=arg;}
private;
class member_ptr* ptr=nullptr;
};
}
という名前空間を作成し、それをmember_ptrが定義されているソース(およびヘッダー)ファイルで使用したいです。
ところがmember_ptr*をset()に渡したとき、「hoge::member_ptr*は member_ptr*と互換性がありません」というエラーが出てしまいsます。
名前空間をはずすorポインタ関連の記述をコメントアウトさせると普通に動作するので、大まかなコード自体は問題ないと思うのですが……
リインタプリットキャストも出来ず困り果てておりますが、名前空間内部のメンバにポインタは持たせない方がいいのでしょうか?
それとも名前空間での不完全クラスでの定義がまずいんでしょうか?
ほとほと困り果てております。
わかる方がいらっしゃいましたらお教えいただけれう゛ぁ……
先感謝!
332デフォルトの名無しさん
2022/07/04(月) 14:31:47.29ID:SMoN2Nle へたくそ
333デフォルトの名無しさん
2022/07/04(月) 17:28:39.11ID:nt0V70V1 どっかで
namespace hoge{
class member_ptr;
}
class member_ptr;
みたいなことやってるような気がする
前方宣言(か実体定義)が別の名前空間にあって、同じclassを見てるつもりで別のclassを見ているだけじゃない?
namespace hoge{
class member_ptr;
}
class member_ptr;
みたいなことやってるような気がする
前方宣言(か実体定義)が別の名前空間にあって、同じclassを見てるつもりで別のclassを見ているだけじゃない?
334デフォルトの名無しさん
2022/07/04(月) 17:47:01.88ID:KuJlBNV3 >>331
長文になってしまいますがお許しください。
───────────────
//ptr.h
class ptr
{
public:
ptr(int arg) { a = arg; }
int a = 0;
};
───────────────
//Test.h
namespace Test {
class innerTest
{
public:
class ptr* get_mPtr();
private:
class ptr* mPtr;
};
}
───────────────
//Test.cpp
#include "Test.h"
#include "ptr.h"
ptr* Test::innerTest::get_mPtr()
{
return nullptr;
}
//↑この定義部分で「宣言に互換性がありません」というエラーが出てしまいます
長文になってしまいますがお許しください。
───────────────
//ptr.h
class ptr
{
public:
ptr(int arg) { a = arg; }
int a = 0;
};
───────────────
//Test.h
namespace Test {
class innerTest
{
public:
class ptr* get_mPtr();
private:
class ptr* mPtr;
};
}
───────────────
//Test.cpp
#include "Test.h"
#include "ptr.h"
ptr* Test::innerTest::get_mPtr()
{
return nullptr;
}
//↑この定義部分で「宣言に互換性がありません」というエラーが出てしまいます
335はちみつ餃子 ◆8X2XSCHEME
2022/07/04(月) 18:04:55.71ID:3k8jHKP2 >>334
class キーワードを付けた場合にはクラスの宣言を同時にしたものとみなされる。
つまり class ptr* get_mPtr(); と class ptr* mPtr; は「このスコープで」 ptr を宣言したかのように扱われる。
もちろん実際には innerTest の中では ptr の定義はないので不完全型のままだが、
この ptr は Test::innerTest::ptr のつもりで解釈されてる。
グローバル空間で定義している ptr とは別物なので別物というエラーになるわけ。
class キーワードを付けた場合にはクラスの宣言を同時にしたものとみなされる。
つまり class ptr* get_mPtr(); と class ptr* mPtr; は「このスコープで」 ptr を宣言したかのように扱われる。
もちろん実際には innerTest の中では ptr の定義はないので不完全型のままだが、
この ptr は Test::innerTest::ptr のつもりで解釈されてる。
グローバル空間で定義している ptr とは別物なので別物というエラーになるわけ。
336デフォルトの名無しさん
2022/07/04(月) 18:34:14.66ID:PrdXwxk2 class ptr;
namespace Test {
...
namespace Test {
...
337デフォルトの名無しさん
2022/07/04(月) 18:53:01.66ID:tfDB1jS/ Cのstructと同じ感覚でclassって書いちゃってるのかこれ
338デフォルトの名無しさん
2022/07/04(月) 18:59:50.67ID:XQTVc721 >>335
> この ptr は Test::innerTest::ptr のつもりで解釈されてる。
Test::ptr だね。
https://timsong-cpp.github.io/cppwp/n4861/basic.scope.pdecl#7.2
> この ptr は Test::innerTest::ptr のつもりで解釈されてる。
Test::ptr だね。
https://timsong-cpp.github.io/cppwp/n4861/basic.scope.pdecl#7.2
339デフォルトの名無しさん
2022/07/04(月) 19:27:20.38ID:KuJlBNV3 >>335!336,338
ありがとうございます!
おっしゃる通りに名前空間の外で前方宣言し、ソース部分で定義したらうまくいきました!
特に理由がない限り、名前空間内部で定義してはいけない(戒め)
ありがとうございました!
ありがとうございます!
おっしゃる通りに名前空間の外で前方宣言し、ソース部分で定義したらうまくいきました!
特に理由がない限り、名前空間内部で定義してはいけない(戒め)
ありがとうございました!
340デフォルトの名無しさん
2022/07/05(火) 15:17:54.21ID:CUrAgxNd 有害だな
341蟻人間 ◆T6xkBnTXz7B0
2022/07/05(火) 20:29:56.62ID:ol9myr0e You guy
342デフォルトの名無しさん
2022/07/05(火) 23:44:59.73ID:tIUWM2dq VB.NETからバイナリをC++(JNI)に渡して受け取ったバイナリをJavaに渡したいんですけど、C++で受け取ったBYTEをjobjectに変換する方法が分かりません。
どなたかご存知でしょうか。
どなたかご存知でしょうか。
343デフォルトの名無しさん
2022/07/06(水) 23:58:31.79ID:Hb7nTur+ C++勉強中です。ムーブコンストラクタについて教えてください。
ムーブコンストラクタは、要はムーブ元の指すポインタをムーブ先に変更しているだけだと思います。
これはconstなしコンストラクタでも実現できると思いますが、意図を明示するためにコンストラクタが分かれていると思っていいですか?
また、ムーブコンストラクタの仮引数が右辺値参照になっている(std::moveした右辺値を渡す)理由がよく分からないのですが、これは決まり文句として覚えるしかないでしょうか?
ムーブコンストラクタは、要はムーブ元の指すポインタをムーブ先に変更しているだけだと思います。
これはconstなしコンストラクタでも実現できると思いますが、意図を明示するためにコンストラクタが分かれていると思っていいですか?
また、ムーブコンストラクタの仮引数が右辺値参照になっている(std::moveした右辺値を渡す)理由がよく分からないのですが、これは決まり文句として覚えるしかないでしょうか?
344デフォルトの名無しさん
2022/07/07(木) 00:12:38.45ID:wEF1aVE0345デフォルトの名無しさん
2022/07/07(木) 00:13:26.51ID:owvrtcUU ムーブって、所有者が移転してると考えた方が
場所なんてどうでもいいでしょう
場所なんてどうでもいいでしょう
346はちみつ餃子 ◆8X2XSCHEME
2022/07/07(木) 00:38:46.12ID:6JbvD3+y >>343
右辺値は大抵の場合に一時オブジェクトだからどうせすぐに破棄される。
後で別の場所で使うということがないと期待できるから内容を移動してしまっても問題にならないんだ。
だから右辺値を入力とするときは原則としてムーブ扱いにする。
右辺値は大抵の場合に一時オブジェクトだからどうせすぐに破棄される。
後で別の場所で使うということがないと期待できるから内容を移動してしまっても問題にならないんだ。
だから右辺値を入力とするときは原則としてムーブ扱いにする。
347デフォルトの名無しさん
2022/07/07(木) 08:00:15.88ID:dqsYDet1 多分、右辺値参照イコールmoveと覚えてしまってるのでは?
C++11より前は一時オブジェクトとそうでないものを文法上区別することが出来なかったのよ
moveはあくまでキャストに過ぎない、一時オブジェクトでないものを一時オブジェクト扱いにしてるだけ
C++11より前は一時オブジェクトとそうでないものを文法上区別することが出来なかったのよ
moveはあくまでキャストに過ぎない、一時オブジェクトでないものを一時オブジェクト扱いにしてるだけ
348343
2022/07/07(木) 23:27:53.10ID:jxXWRXC4 一時オブジェクトにキャストしてすぐ破棄されるようにしたと言っても、
右辺値参照に代入しているのでヌルポインタにするまでは使い続けられますよね
そもそもstd::moveで一時オブジェクトにキャスト、これを右辺値参照で束縛して有効期間を延ばす…って
初めから普通の変数を使えばいいのでは?と思ってしまいました
ムーブを表すための仕組みとして&&とstd::moveの組み合わせが追加されたということなんでしょうかね
右辺値参照に代入しているのでヌルポインタにするまでは使い続けられますよね
そもそもstd::moveで一時オブジェクトにキャスト、これを右辺値参照で束縛して有効期間を延ばす…って
初めから普通の変数を使えばいいのでは?と思ってしまいました
ムーブを表すための仕組みとして&&とstd::moveの組み合わせが追加されたということなんでしょうかね
349デフォルトの名無しさん
2022/07/07(木) 23:44:43.71ID:a8KVNXrY >>348
結局そのあたりも含めてC++で複雑化した様々な点を全てシンプルに綺麗に整理し直して分かりやすくした言語が望まれてRustが登場したんだろうね
結局そのあたりも含めてC++で複雑化した様々な点を全てシンプルに綺麗に整理し直して分かりやすくした言語が望まれてRustが登場したんだろうね
351はちみつ餃子 ◆8X2XSCHEME
2022/07/08(金) 00:21:33.36ID:5BE4kGYi■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【映画】『クレヨンしんちゃん』 中国で公開延期 対日報復、エンタメに波及 [冬月記者★]
- Xのネトウヨは大体高齢独身。40過ぎて独身だと例外なく狂うって本当だったんだなと思う [805596214]
- 生活保護だけど30万円のPCの椅子買おうか迷ってる
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 女の子に生まれ変わったらやりたいこと🍓🍫💄❤ [856698234]
- ウッドデッキで調子こいてたやついたじゃん
