C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part144
https://mevius.5ch.net/test/read.cgi/tech/1563769115/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://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++相談室 part145
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/09/13(金) 17:13:24.60ID:/ygW08Jq546蟻人間 ◆T6xkBnTXz7B0
2019/10/21(月) 19:22:51.62ID:ICV7tWge バッファがいっぱいになったらどうしよう?
547537
2019/10/21(月) 19:27:27.31ID:iqf1snDW >>540
それらの同期機能って標準C++のクラスだけで実現できるもんなの?
それらの同期機能って標準C++のクラスだけで実現できるもんなの?
548デフォルトの名無しさん
2019/10/21(月) 19:30:51.93ID:Kc9FjQwr >>546
捨てるしかないだろ
捨てるしかないだろ
549デフォルトの名無しさん
2019/10/21(月) 20:56:31.15ID:NgTxqwl+ >>547
どこまでを標準と言ってるのか知らんけどお前の考える標準でスレッドをサポートしてるならたいてい同期機構もあるはず
どこまでを標準と言ってるのか知らんけどお前の考える標準でスレッドをサポートしてるならたいてい同期機構もあるはず
550蟻人間 ◆T6xkBnTXz7B0
2019/10/21(月) 21:02:21.32ID:LVq8IpRv >>547
WindowsではCriticalSection, CreateMutexなどがあったからC++11以前でも使えた。
C++11からstd::mutex, std::lock_guardなどが使えるぞ。
WindowsではCriticalSection, CreateMutexなどがあったからC++11以前でも使えた。
C++11からstd::mutex, std::lock_guardなどが使えるぞ。
551デフォルトの名無しさん
2019/10/22(火) 00:25:01.95ID:IM/z9Y8P ロックフリー的ななんか無かったっけ?
552蟻人間 ◆T6xkBnTXz7B0
2019/10/22(火) 16:18:00.26ID:QN5InCe0 リングバッファの排他制御どうするか?
push/popごとにロックかけたら遅くなりそう。
push/popごとにロックかけたら遅くなりそう。
553デフォルトの名無しさん
2019/10/22(火) 16:36:38.23ID:LzjGZCpL >>545
stlライクにしてる割にコピーやムーブが内部の値ベースなのおかしくない?
stlライクにしてる割にコピーやムーブが内部の値ベースなのおかしくない?
554デフォルトの名無しさん
2019/10/22(火) 17:03:31.86ID:mzkWHCb9 用途的に
reader 1
wrtier 1
だと思うけどそれならwait freeな実装が可能
read pointer/writer pointerで制御するやつね
かつかつに最適化するならこれ
しかしその前にどれだけの頻度と長さで排他の衝突するか見た方がいい
リアルタイムのオーディオなら短くても5msec周期とかじゃないか
かつlock中に多少のメモリの読み書きやってるだけなら排他が必要な時間は短い
なら素朴にmutex1個でのロックで十分な可能性も高い
同期のミスはデバッグがつらいから不用意に難しいことしない方がいい
もしくはある程度のバッファリング(遅延)が許容できるとか、固定長の処理であるなら
ならバッファを複数用意してダブル、トリプルバッファ的な制御でもいいだろう
つまりwriter側でバッファに全部書き終わったらそのバッファをreader側のキューにいれる
reader側は全部読み終わったらwriter側のキューに戻す
っての
とにかく原則どおりまずシンプルにミスなく作って計測して最適化ね
reader 1
wrtier 1
だと思うけどそれならwait freeな実装が可能
read pointer/writer pointerで制御するやつね
かつかつに最適化するならこれ
しかしその前にどれだけの頻度と長さで排他の衝突するか見た方がいい
リアルタイムのオーディオなら短くても5msec周期とかじゃないか
かつlock中に多少のメモリの読み書きやってるだけなら排他が必要な時間は短い
なら素朴にmutex1個でのロックで十分な可能性も高い
同期のミスはデバッグがつらいから不用意に難しいことしない方がいい
もしくはある程度のバッファリング(遅延)が許容できるとか、固定長の処理であるなら
ならバッファを複数用意してダブル、トリプルバッファ的な制御でもいいだろう
つまりwriter側でバッファに全部書き終わったらそのバッファをreader側のキューにいれる
reader側は全部読み終わったらwriter側のキューに戻す
っての
とにかく原則どおりまずシンプルにミスなく作って計測して最適化ね
555デフォルトの名無しさん
2019/10/22(火) 17:19:01.36ID:mzkWHCb9 ringのソース見たけど
おれはm_full なしでやるのが好みだな
つまりm_front_indexとm_back_indexが一致するのはemptyのときのみ
full時には実際は1個空きがある状態
これを推し進めればwait freeの実装に近づけるぞ
車輪の再発明だが勉強にはなる
おれはm_full なしでやるのが好みだな
つまりm_front_indexとm_back_indexが一致するのはemptyのときのみ
full時には実際は1個空きがある状態
これを推し進めればwait freeの実装に近づけるぞ
車輪の再発明だが勉強にはなる
556デフォルトの名無しさん
2019/10/22(火) 17:21:45.79ID:2ZhQSHmS557蟻人間 ◆T6xkBnTXz7B0
2019/10/22(火) 17:29:01.30ID:QN5InCe0 まずは記憶媒体の性能を計測してみた。
https://github.com/katahiromz/YappyCam/blob/master/tests/diskrate/diskrate.cpp
https://twitter.com/katahiromz/status/1186558848393285633
これはSSDの場合だ。HDDでも同様に計測しないといけない。
https://twitter.com/5chan_nel (5ch newer account)
https://github.com/katahiromz/YappyCam/blob/master/tests/diskrate/diskrate.cpp
https://twitter.com/katahiromz/status/1186558848393285633
これはSSDの場合だ。HDDでも同様に計測しないといけない。
https://twitter.com/5chan_nel (5ch newer account)
558蟻人間 ◆T6xkBnTXz7B0
2019/10/22(火) 17:43:23.84ID:QN5InCe0 static DWORD s_dwTick;
printf("write: %ld, %ld\n", cbToWrite, GetTickCount() - s_dwTick);
s_dwTick = GetTickCount();
// 最高の音質での出力。
write: 3900, 15
write: 3900, 0
write: 3900, 16
write: 3904, 16
write: 3900, 0
10msecごとに音声データがおよそ3900バイトあるようだ。
printf("write: %ld, %ld\n", cbToWrite, GetTickCount() - s_dwTick);
s_dwTick = GetTickCount();
// 最高の音質での出力。
write: 3900, 15
write: 3900, 0
write: 3900, 16
write: 3904, 16
write: 3900, 0
10msecごとに音声データがおよそ3900バイトあるようだ。
559デフォルトの名無しさん
2019/10/22(火) 18:28:33.04ID:HSQTG8Jj >>558
Win32APIや音声仕様はC++じゃないのでよそでどうぞ。>蟻人間
Win32APIや音声仕様はC++じゃないのでよそでどうぞ。>蟻人間
561蟻人間 ◆T6xkBnTXz7B0
2019/10/22(火) 20:08:29.90ID:+0Lq2R8m 【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
こっちに移動します。回答者に感謝します。
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
こっちに移動します。回答者に感謝します。
562デフォルトの名無しさん
2019/10/22(火) 21:35:58.70ID:SC+tqfVH Win32APIって何だよ
20年前からタイムスリップでもしてきたか?
20年前からタイムスリップでもしてきたか?
>>562
win32api(64bit版)で書くのが正義、という価値観もまだまだ存在するようです
win32api(64bit版)で書くのが正義、という価値観もまだまだ存在するようです
564デフォルトの名無しさん
2019/10/22(火) 23:33:30.81ID:QUuuj0zF C++11からできた属性構文あるけどこの属性は宣言にだけつければOK?
定義にも同じ属性を記載するべき?
定義にも同じ属性を記載するべき?
565デフォルトの名無しさん
2019/10/23(水) 00:34:15.61ID:kAyiuXKe >>563
それはお前だけの価値観だろハゲ
それはお前だけの価値観だろハゲ
566デフォルトの名無しさん
2019/10/23(水) 00:50:12.41ID:/s0IRa9G >>563,565
Mozilla Firefoxなどサードパーティ大手は今もWin32APIをネイティブに使っており.NETを使ってない。
Mozilla Firefoxなどサードパーティ大手は今もWin32APIをネイティブに使っており.NETを使ってない。
568デフォルトの名無しさん
2019/10/23(水) 02:03:48.66ID:my1FePPi 単に64bitのWindows APIもなぜかwin32と呼ばれ続けてること知らないんだろ
569デフォルトの名無しさん
2019/10/23(水) 06:28:47.24ID:/lpUBik0 それこそ20年前からタイムスリップしたのかって話だなw
570デフォルトの名無しさん
2019/10/23(水) 18:08:41.93ID:bvZ5IXVl 速度重視な場面ならWin32APIは今でも普通に使う
571デフォルトの名無しさん
2019/10/23(水) 20:43:18.87ID:R0F6kh0V うわぁ・・・
572デフォルトの名無しさん
2019/10/23(水) 21:15:01.42ID:kC3TvNwV 正直なところWin32APIで速度でるの?
573デフォルトの名無しさん
2019/10/23(水) 21:30:55.10ID:/s0IRa9G >>572
「Linuxシステムコールで速度でるの?」という質問と同じくらい矛盾に満ちた質問。
Win32APIも含めシステムコールはOSが提供するAPIなので、プログラマは他の手段で代替しようない。
「Linuxシステムコールで速度でるの?」という質問と同じくらい矛盾に満ちた質問。
Win32APIも含めシステムコールはOSが提供するAPIなので、プログラマは他の手段で代替しようない。
574デフォルトの名無しさん
2019/10/23(水) 21:35:56.58ID:H9cLmi0l Native APIがあるじゃろ
575デフォルトの名無しさん
2019/10/23(水) 22:12:26.70ID:B7dtMHRy Visual C++ 2015なんですが、
goto文でERRORというラベルに飛ばそうとしたら、コンパイルエラーが出ました。
ERRにしたらコンパイルできるようになったんですが、
なぜERRORのラベルはダメなんでしょうか?
goto文でERRORというラベルに飛ばそうとしたら、コンパイルエラーが出ました。
ERRにしたらコンパイルできるようになったんですが、
なぜERRORのラベルはダメなんでしょうか?
577デフォルトの名無しさん
2019/10/23(水) 22:22:30.17ID:R0F6kh0V #undef ERROR
578デフォルトの名無しさん
2019/10/23(水) 22:24:20.08ID:H9cLmi0l 単語1つのラベルなんか使うなってこった
579デフォルトの名無しさん
2019/10/23(水) 22:28:23.69ID:R0F6kh0V いやC++ではマクロが悪だ
580575
2019/10/23(水) 22:32:44.87ID:B7dtMHRy ERRORのdefineがあるんですね・・・!
ありがとうございました!
ありがとうございました!
581デフォルトの名無しさん
2019/10/24(木) 09:12:01.73ID:m57JSwXI クソみたいなマクロにsmallもある
他にもwindows.hには地雷が入念に仕込まれてる
普通の神経の人間が爆死して厭らしい人間だけが生き残るように整えられている厭らしい環境がwindows.hだよ
マトモな人間にはまず耐えられない
頭のオカシイ厭らしい人間だけが残るように設計されているのがwindows.h
このヘッダは頭がおかしい
他にもwindows.hには地雷が入念に仕込まれてる
普通の神経の人間が爆死して厭らしい人間だけが生き残るように整えられている厭らしい環境がwindows.hだよ
マトモな人間にはまず耐えられない
頭のオカシイ厭らしい人間だけが残るように設計されているのがwindows.h
このヘッダは頭がおかしい
582デフォルトの名無しさん
2019/10/24(木) 13:45:08.38ID:VURCQr2T >>581
お前の頭がおかしいだけだと思う
お前の頭がおかしいだけだと思う
583デフォルトの名無しさん
2019/10/24(木) 13:57:45.03ID:SfEmAS3k 林檎だってcheckマクロでBoostに大迷惑かけてるしお互い様
584デフォルトの名無しさん
2019/10/24(木) 17:59:23.36ID:0EVcBOG9585デフォルトの名無しさん
2019/10/24(木) 18:05:45.17ID:pgieaG2c ヘッダ「嫌ならincludeするな」
586デフォルトの名無しさん
2019/10/24(木) 19:57:40.06ID:WiWlXxwu このスレはみんなWindows嫌いなのかな
587デフォルトの名無しさん
2019/10/24(木) 20:17:56.94ID:TRYJth0S んなわけない
588デフォルトの名無しさん
2019/10/24(木) 21:28:21.53ID:hxYU3Lux たしかmaxとかもマクロ定義されてたよね
初心者のころはどハマリして殺意がわいたわ
初心者のころはどハマリして殺意がわいたわ
589デフォルトの名無しさん
2019/10/24(木) 21:49:18.24ID:omM/Gkq5 いまはIDEが色変えてくれるからすぐわかるから別にいいけどね
590デフォルトの名無しさん
2019/10/24(木) 23:20:19.58ID:M5uvwdA8 マクロがあればなんでもできる
591デフォルトの名無しさん
2019/10/24(木) 23:40:29.47ID:PIyGP0m1 最近ちょいちょい思うことだが、ある言語のここがどうであーだこうだと議論する場合
テキストエディタでコーディング作業してる連中と IDE でコーディング作業してる連中では
わりと大きな認識の違いがあることが多い
テキストエディタでコーディング作業してる連中と IDE でコーディング作業してる連中では
わりと大きな認識の違いがあることが多い
592デフォルトの名無しさん
2019/10/24(木) 23:44:34.75ID:8Fri6DgZ windows.hのマクロ回りでトラブル起こしているのは、殆んどvisual studio使用者だと思うのだが
593デフォルトの名無しさん
2019/10/25(金) 00:24:04.41ID:AZBzSxe6 認識の違いはコンパイラによるものであってコードエディタは関係ない。
594デフォルトの名無しさん
2019/10/25(金) 00:39:26.61ID:ghRRxqDU モジュールでマクロとか気にしなくて良くなる(なるといいなぁ...)
595デフォルトの名無しさん
2019/10/25(金) 07:52:28.01ID:51G3P59H コンパイラ変えてもマクロは変わらんでしょ
せいぜいエラーメッセージ変わるぐらいじゃ
せいぜいエラーメッセージ変わるぐらいじゃ
596デフォルトの名無しさん
2019/10/25(金) 09:14:30.39ID:AZBzSxe6 >>595
何言ってるのか意味がわかりにくいエラーメッセージを吐くのはコンパイラでしょ。
何言ってるのか意味がわかりにくいエラーメッセージを吐くのはコンパイラでしょ。
597デフォルトの名無しさん
2019/10/25(金) 12:19:38.16ID:51G3P59H マクロは影響範囲わからんからなんとも
vcでマクロがテンプレートに影響したらマジでわからん
clangはテンプレートのエラーメッセージわかりやすいとかみたな
vcでマクロがテンプレートに影響したらマジでわからん
clangはテンプレートのエラーメッセージわかりやすいとかみたな
598デフォルトの名無しさん
2019/10/25(金) 12:45:17.61ID:yKAgzXLG599デフォルトの名無しさん
2019/10/25(金) 17:33:51.00ID:AZBzSxe6 初心者であればあるほど親切なエラーメッセージが必要なのだけど、VCのエラーメッセージはgccに比べて不親切な印象がある。
STL関連のエラーメッセージは、わかりにくい代表格。かたやgccはprintf系の書式ミスを指摘してくれるなど初心者に優しい。
STL関連のエラーメッセージは、わかりにくい代表格。かたやgccはprintf系の書式ミスを指摘してくれるなど初心者に優しい。
600デフォルトの名無しさん
2019/10/25(金) 18:03:22.82ID:AZBzSxe6 C#が使いやすいと思っている人は、Visual Studioの入力補完に救われていることに気づいていない。
Visual Studioがなければヘッダーファイル相当のgrep検索もままならない不便な言語であると感じるだろう。
Visual Studioがなければヘッダーファイル相当のgrep検索もままならない不便な言語であると感じるだろう。
601デフォルトの名無しさん
2019/10/25(金) 18:50:41.74ID:StYWqeWG VS込みでいいじゃん
どうせC#なんて大半がWindows向けなんだしVS使える環境で開発してるでしょ
って変なこと言うと思ったらADSLか
どうせC#なんて大半がWindows向けなんだしVS使える環境で開発してるでしょ
って変なこと言うと思ったらADSLか
602デフォルトの名無しさん
2019/10/25(金) 19:00:26.80ID:r/2esNbS referencesource.microsoft.comみたいなありがたいものがあるのに
603デフォルトの名無しさん
2019/10/25(金) 19:58:41.60ID:q2iK2L4t 基本的には MSDN こそ C++ である。
604デフォルトの名無しさん
2019/10/26(土) 00:56:44.62ID:7AoWPXY8 class A{};
namespace N
{
class B{
friend class A;
int i;
};
class A{
A(){b.i = 0;}
B b;
};
};
これをコンパイルできるようにするにはどうすればいいですか?
・クラスAを名前空間Nの下に書く
・名前空間NのクラスAを別の名前にする
・最初のクラスAを別の名前にする
これ以外でできますか?
namespace N
{
class B{
friend class A;
int i;
};
class A{
A(){b.i = 0;}
B b;
};
};
これをコンパイルできるようにするにはどうすればいいですか?
・クラスAを名前空間Nの下に書く
・名前空間NのクラスAを別の名前にする
・最初のクラスAを別の名前にする
これ以外でできますか?
605デフォルトの名無しさん
2019/10/26(土) 00:59:53.57ID:SyjizfQh 全部消す
606デフォルトの名無しさん
2019/10/26(土) 01:35:09.91ID:dcsgYCXg >>604
「コンパイルできるようにする」
というだけであれば、何も修正しない元のままでもコンパイルできるはずだし、
最初の class A {} の行をコメントアウトする、消す。
Nの中のAを消す、namespace N {・・・} の部分を全部消す、
などなどいくらでも有りえる。
「コンパイルできるようにする」
というだけであれば、何も修正しない元のままでもコンパイルできるはずだし、
最初の class A {} の行をコメントアウトする、消す。
Nの中のAを消す、namespace N {・・・} の部分を全部消す、
などなどいくらでも有りえる。
607デフォルトの名無しさん
2019/10/26(土) 06:20:26.55ID:3CUGZWDU BのfriendをN::AにしたいってことであればNとBの間にclass A;とAの宣言を入れる
これ以上のエスパーは無理
これ以上のエスパーは無理
608デフォルトの名無しさん
2019/10/26(土) 08:16:08.08ID:kGqH5EJJ >>604
g++だと、現状のままでok
vs2019は、friend宣言の対象が::AになっていてC2248
::Aをコメントアウトするとok
正しいのはg++
N4713 6.4.1. Unqualified name lookup (7.4)
Note: When looking for a prior declaration of a class or function
introduced by a friend declaration, scopes outside of the innermost
enclosing namespace scope are not considered; see 10.3.1.2.
g++だと、現状のままでok
vs2019は、friend宣言の対象が::AになっていてC2248
::Aをコメントアウトするとok
正しいのはg++
N4713 6.4.1. Unqualified name lookup (7.4)
Note: When looking for a prior declaration of a class or function
introduced by a friend declaration, scopes outside of the innermost
enclosing namespace scope are not considered; see 10.3.1.2.
609デフォルトの名無しさん
2019/10/26(土) 21:50:06.24ID:JNlbd3QN 投稿テスト
N3337 3.4.1 Unqualified name lookup
Note: When looking for a prior declaration of a class or function
introduced by a friend declaration, scopes outside of the innermost
enclosing namespace scope are not considered; see 7.3.1.2.
N3337 3.4.1 Unqualified name lookup
Note: When looking for a prior declaration of a class or function
introduced by a friend declaration, scopes outside of the innermost
enclosing namespace scope are not considered; see 7.3.1.2.
610デフォルトの名無しさん
2019/10/26(土) 22:03:59.61ID:JNlbd3QN vs2019で::Aをコメントアウトするとokの意味がわからんorz
611デフォルトの名無しさん
2019/10/27(日) 08:17:56.25ID:/F19lavA 試してないが、理論上はこれでいけるはず :
namespace N
{
class A;
class B{
int i;
friend class A;
};
class A{
B b;
A(){b.i = 0;}
};
};
namespace N
{
class A;
class B{
int i;
friend class A;
};
class A{
B b;
A(){b.i = 0;}
};
};
612デフォルトの名無しさん
2019/10/27(日) 08:27:09.91ID:C3DsRDjK N::Aを前方宣言するなら、宣言を名前空間Nの中に入れるかN::Aで宣言する必要があるってのはC++の規約通りじゃないのか?
>>608が意味わからん
>>608が意味わからん
613デフォルトの名無しさん
2019/10/27(日) 09:08:16.09ID:M7FyKfzv friend宣言は、当該宣言を含むクラスが属するスコープを対象とし
なおかつ、対象スコープに識別子を導入しない
class G
{
friend class A; //::A
};
namespace H
{
class I
{
friend class A; //H::A
};
}
なおかつ、対象スコープに識別子を導入しない
class G
{
friend class A; //::A
};
namespace H
{
class I
{
friend class A; //H::A
};
}
614デフォルトの名無しさん
2019/10/27(日) 12:21:23.69ID:C3DsRDjK >>604はfriend宣言ではなく前方宣言の問題なんだが?
615デフォルトの名無しさん
2019/10/27(日) 14:03:45.40ID:M7FyKfzv いや前方宣言は関係ない
「もし」::Aがあったら、H::Aがあったら
と言っているだけのものだ
「もし」::Aがあったら、H::Aがあったら
と言っているだけのものだ
616デフォルトの名無しさん
2019/10/27(日) 14:25:39.88ID:vcUKQgsd >>614
前方参照をfriendがどう解釈するかの問題だろ
前方参照をfriendがどう解釈するかの問題だろ
617デフォルトの名無しさん
2019/10/27(日) 15:28:12.27ID:itfBjV2c618デフォルトの名無しさん
2019/10/27(日) 15:53:16.22ID:ho9vIROt619デフォルトの名無しさん
2019/10/27(日) 15:56:22.52ID:M7FyKfzv >>617
そのとおりだが?
//class A{};
namespace N
{
class B{
friend class A;
int i;
};
class A{
A(){b.i = 0;}
B b;
};
};
friend宣言が識別子を導入したり
関係ないはずのグローバルに干渉するなど
vcはfriendにクセがある
そのとおりだが?
//class A{};
namespace N
{
class B{
friend class A;
int i;
};
class A{
A(){b.i = 0;}
B b;
};
};
friend宣言が識別子を導入したり
関係ないはずのグローバルに干渉するなど
vcはfriendにクセがある
620デフォルトの名無しさん
2019/10/27(日) 16:07:13.81ID:6193c9It 規格的にはどうなるのが正しいの?
むしろ、もとの話がどうしたいのかに依る気がしないでもない
むしろ、もとの話がどうしたいのかに依る気がしないでもない
621デフォルトの名無しさん
2019/10/27(日) 16:13:20.11ID:rrcAfXPk622デフォルトの名無しさん
2019/10/27(日) 16:22:22.30ID:itfBjV2c >Visual Studioなら>>619みたいにするってことでしょ
https://festy.jp/wp-content/uploads/festy/2015/12/25/06/51/40/917/1448191295053.jpg
>>604の
>・最初のクラスAを別の名前にする
と何が違うんだそれ
https://festy.jp/wp-content/uploads/festy/2015/12/25/06/51/40/917/1448191295053.jpg
>>604の
>・最初のクラスAを別の名前にする
と何が違うんだそれ
623デフォルトの名無しさん
2019/10/27(日) 16:55:17.47ID:rrcAfXPk >>622
一緒だよ
だからそれができないならg++(とか他のちゃんと規格準拠して処理系)にしろって書いてあるだ
まあVisual Studioが規格準拠するのを待つとかMSにねじ込むか金払って対応してもらうとかでもいいけどw
一緒だよ
だからそれができないならg++(とか他のちゃんと規格準拠して処理系)にしろって書いてあるだ
まあVisual Studioが規格準拠するのを待つとかMSにねじ込むか金払って対応してもらうとかでもいいけどw
624デフォルトの名無しさん
2019/10/27(日) 20:50:09.77ID:5FCyBaq0 トンチンカンな質問かもしれませんが許して。
<Base>のコンテナを巡回しながら
Base派生の多態性を引数で実現、みたいなことがやりたいのです。
https://ideone.com/PA26HG
これのManager::update()が、このままだと当然
func(shared_ptr<Base>,shared_ptr<Base>)を呼ぼうとしてしまう訳ですが
宣言してあるfunc(A,A)とかfunc(A,B)とかfunc(B,B)とかが
呼ばれるようにするにはどうしたらいいですかね?
あるいは、ガラっとコード変わってもだいたい似たようなことを実現するとしたら
どう書きますか?
<Base>のコンテナを巡回しながら
Base派生の多態性を引数で実現、みたいなことがやりたいのです。
https://ideone.com/PA26HG
これのManager::update()が、このままだと当然
func(shared_ptr<Base>,shared_ptr<Base>)を呼ぼうとしてしまう訳ですが
宣言してあるfunc(A,A)とかfunc(A,B)とかfunc(B,B)とかが
呼ばれるようにするにはどうしたらいいですかね?
あるいは、ガラっとコード変わってもだいたい似たようなことを実現するとしたら
どう書きますか?
625デフォルトの名無しさん
2019/10/27(日) 20:52:12.38ID:oi2VB0wA シェアポの配列を作って添え字で切り替え。
626デフォルトの名無しさん
2019/10/27(日) 20:54:15.22ID:oi2VB0wA あ、すまん。誤読していた。
>>宣言してあるfunc(A,A)とかfunc(A,B)とかfunc(B,B)とか
多態やってる意味を潰しに来てないか?
>>宣言してあるfunc(A,A)とかfunc(A,B)とかfunc(B,B)とか
多態やってる意味を潰しに来てないか?
628蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 20:59:49.33ID:cNZwDfUU もしくはfuncでは仮想化された関数しか使わないとか。
629デフォルトの名無しさん
2019/10/27(日) 21:09:28.45ID:aWGByvYb >>624
visitorパターン
visitorパターン
630642
2019/10/27(日) 21:09:54.33ID:5FCyBaq0631624
2019/10/27(日) 21:14:40.36ID:5FCyBaq0632デフォルトの名無しさん
2019/10/27(日) 21:34:36.36ID:4WtkkchW >>624
愚直に dynamic_cast で N*N 分岐からはじめたら?
愚直に dynamic_cast で N*N 分岐からはじめたら?
633デフォルトの名無しさん
2019/10/27(日) 22:12:39.30ID:5au4GxkL 2引数ならdouble dispatchとか
634デフォルトの名無しさん
2019/10/27(日) 22:14:23.71ID:SYtHJPpD 派生クラスの種類が決まっているなら
variantに置き換えたらvisit使えるから簡単
variantに置き換えたらvisit使えるから簡単
635デフォルトの名無しさん
2019/10/28(月) 05:15:43.29ID:VJWcm+Z+636デフォルトの名無しさん
2019/10/29(火) 01:15:36.46ID:Vnr+WSpj C++でCOM扱うの苦痛すぎる
何が正攻法なのかさっぱりわからん
何が正攻法なのかさっぱりわからん
638デフォルトの名無しさん
2019/10/29(火) 01:41:40.05ID:Vnr+WSpj 別にCOMは作るんじゃないんだよ。
参照するだけなんだよ。
それでもATLなんーーーーーーーーー?
参照するだけなんだよ。
それでもATLなんーーーーーーーーー?
639デフォルトの名無しさん
2019/10/29(火) 01:43:16.61ID:Vnr+WSpj そもそも文字コードどうなってるんやーーーー
コマンドプロンプトに出す時、どうするんやーー
現在のchcpの設定に従って変換線といかんのカーーーーーー
コマンドプロンプトに出す時、どうするんやーー
現在のchcpの設定に従って変換線といかんのカーーーーーー
640蟻人間 ◆T6xkBnTXz7B0
2019/10/29(火) 02:28:13.51ID:OOQqvLIR 変換なんてWideCharToMultiByte使って一つ変換関数作ってその関数を使い回せばいいやん。
641デフォルトの名無しさん
2019/10/29(火) 02:42:32.11ID:/DWax9vx WriteConsoleW
642デフォルトの名無しさん
2019/10/29(火) 04:01:15.69ID:ymnLB/52643デフォルトの名無しさん
2019/10/29(火) 04:07:41.50ID:ymnLB/52 例えばググって見つけた、こことか
http://www.t-net.ne.jp/~cyfis/win_api/sdk/WideCharToMultiByte.html
wchar_t を const wchar_t にするのはまあいいとして、
日本語はOKだけど絵文字とか化けるじゃねーか
わーけわかねなんdfっrね;jk
http://www.t-net.ne.jp/~cyfis/win_api/sdk/WideCharToMultiByte.html
wchar_t を const wchar_t にするのはまあいいとして、
日本語はOKだけど絵文字とか化けるじゃねーか
わーけわかねなんdfっrね;jk
644デフォルトの名無しさん
2019/10/29(火) 04:13:15.89ID:ymnLB/52 ん?WideCharToMultiByteってShiftJISに戻すやつじゃねーのか?
俺はUnicode文字すべてを表示したいだけだぞ
俺はUnicode文字すべてを表示したいだけだぞ
645デフォルトの名無しさん
2019/10/29(火) 04:20:56.50ID:xS90z6YC chcpくらい使えよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
