C++相談室 part137

■ このスレッドは過去ログ倉庫に格納されています
2018/07/14(土) 17:53:02.14ID:FOAGvAbs
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

----- テンプレ ここまで -----

VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/08/06(月) 00:29:53.59ID:b7eNDjo0
>>553-556
/* ref */

引数内で、コメントを使えば?
2018/08/06(月) 04:28:30.45ID:EZAi1/yQ
>>559
templateの右辺値参照もダメとか
さすがに修正が必要だな
2018/08/06(月) 11:34:49.72ID:aJPEpevk
>>567
別の項にmoveコンストラクタ、move代入演算子、perfect forwardingするときは右辺値参照使ってええよって書いてあるから、右辺値参照は対象外なんだと思う。

>>565
できたら遊ばせてねー
2018/08/06(月) 12:01:58.56ID:aJPEpevk
aiでautoってことは遊ぶんじゃなくて遊ばれちゃうのか…
2018/08/06(月) 13:00:05.48ID:6LLA+7Q/
Googleコーディング規約は古臭くてオワコンだからみんなはISOで作ってる規約を使おうね!
って禿先生が講演で言ってた
571551
垢版 |
2018/08/06(月) 18:02:56.58ID:L/6qyfUO
>>596
ステージ生成してAIに解いてもらおうと。
そのAI書かないといけないんですけどね。
2018/08/06(月) 18:04:44.92ID:L/6qyfUO
しかし、ロジカルなことしたいのに、それ以外のエラーで死にかけるのは困ったなぁ。。。
2018/08/06(月) 18:26:13.93ID:0lSQ8xAg
>>572
アルゴリズムの間違いの発見や修正に比べたら、コンパイルエラーの解消なんてコンパイラさんが親切に教えてくれてるんだから、簡単なことだよ。
ロジカルなことしたいなら、コードの記述もロジカルに頑張れ
2018/08/06(月) 19:18:24.62ID:L/6qyfUO
はい。がんばります。
2018/08/06(月) 19:34:04.04ID:ykSda89u
>>570
今現在コード書いてないオワコン禿げのいう事のが信用ねーわ。
江添とかも同類。
コードをまともに書いてないやつが言語仕様決めてるってのがc++のクソなところ。
2018/08/06(月) 19:45:02.37ID:Xt7Beabr
>>575
コードがマトモに書ける人は書く方が忙しいので仕様どころではないって割とありそう
2018/08/06(月) 22:20:17.51ID:zDoA3miN
ryzen threadripper 2950X 16C32T 3.5GHz〜4.4GHz !!
なんだか最近急にすごくなっていませんか?
2018/08/06(月) 23:09:33.16ID:L/6qyfUO
今までのAMDが怠けてただけだよ!
2018/08/06(月) 23:12:22.15ID:zQ2KZFwb
floatのゼロ割りって、infになるものの、別にそれ自体が問題ではなくて、
それがクラッシュに繋がるような演算を行うことが問題であって、
例えば条件分岐で一定の大きさ以下の場合のみ参照するようにしているなら問題ないですよね?
2018/08/06(月) 23:30:48.85ID:Xt7Beabr
ゼロで割り算したい意図は?
2018/08/06(月) 23:38:20.39ID:wPUCa9qR
>>579
うん
>>580
ゼロで割りたいなんて一言も書いてない
582579
垢版 |
2018/08/06(月) 23:40:51.75ID:zQ2KZFwb
>>580
物体の速度なのでゼロのときがあるんです。
例えば、ある距離に到達する時間を求めるとなると、その距離を速度で割るのでゼロ割りがあり得ます。
583579
垢版 |
2018/08/06(月) 23:43:04.07ID:zQ2KZFwb
>>581
ありがとうございます。
ゼロで割ること自体を回避するのって、けっこう厄介なんですよね・・・。
ある程度小さい場合は演算しないとか、どれくらい小さかったらいいの?みたいなことを考えないといけないので・・・。
無限大のときにどうする?という考え方の方が対処し易いように思います。
2018/08/07(火) 06:50:16.11ID:PssQ1NSH
今Python + Opencvで画像処理をしているのですが、速度の問題でこれをC++に書き換えたいです
Pythonのnumpyみたいなものはc++にも有りますか?
OpencvのMatを(多次元配列に格納するなりして)C++で弄くれると嬉しいのですが
2018/08/07(火) 07:05:01.46ID:rmdm0Ojo
まずOpenCVはもともとC++で書かれてるライブラリであってPythonのはラッパーだって所から始めようか
2018/08/07(火) 08:33:46.01ID:dagdXeyj
>>575
めっちゃコード書いてんじゃん
2018/08/07(火) 15:24:28.59ID:pMC2Ofi2
江添っちはコード例はたくさん書いてるけど、
アプリケーションとして完成したものはひとつだけしか見たことねぇ。

今はドワンゴにいるし、社内で使うツールを書いたりすることもあるのかなぁ?
2018/08/07(火) 15:40:59.13ID:3k81+fEr
snprintfには第一引数をNULLにすることで本来何文字の領域があればよかったかを判断できるみたいだけど
wchar_tにはそのようなものはないだろうか?
2018/08/07(火) 15:59:59.84ID:8+yE0dxd
>>570
もしかして先月の27日、行ってきたの?
2018/08/07(火) 16:51:22.86ID:rmdm0Ojo
おう行ってきたぞ
内容は知ってる話が多かったけど本人の口から聞けて楽しかった
2018/08/07(火) 20:17:28.47ID:7soFSQAi
int main(int argc, char** argv)
このchar**って他に変えれたりする?tcharとかwchar_tとか
2018/08/07(火) 20:20:21.90ID:p+v0mQmH
Win32では、int wmain(int, wchar_t**)に変えられるよ。環境変数の引数も付けるのは変態かも知れん。
2018/08/07(火) 20:21:20.30ID:7soFSQAi
>>592
wmainになるのね
助かります
2018/08/07(火) 20:28:56.24ID:rmdm0Ojo
標準で認められてるmain関数はint main();とint main(int argc, char** argv);だけ
それ以外は処理系の独自拡張
2018/08/07(火) 20:40:16.10ID:8+yE0dxd
>>590
何か変わったこと言ってたらレビューplz
2018/08/08(水) 00:08:10.74ID:N8tx/Inn
実は宗教的な会合ではなかろうか
教祖もしくは弟子・伝道者・教皇の御言葉を拝聴する、それが宗教だ

現状、全ての教祖・開祖が生きている時代なので、それを感じないだけだ
10年後くらいにはぼつぼつ死にはじめる
そこからが正念場だ

サイモン&ガーファンクルも生きてるし、K&Rも生きてる、ついでに、ビャーネ・ストロヴストルップとかESRも生きてる
21世紀の今がそういう時代というだけだ
2018/08/08(水) 00:15:12.33ID:35SEMuEM
>>596
デニス・リッチーは2011年に亡くなった
2018/08/08(水) 00:32:10.97ID:bKO8QxvP
イタコがふえるんやなぁ・・・。
2018/08/08(水) 05:08:18.88ID:d90b/R1Y
宗教だと? 失礼だな
俺は禿を盲信なんかしてねえよ
newなんかいらねえと俺は初版の当時から思っていたし
動的例外指定なんぞISOで否定されてんだぞ
2018/08/08(水) 05:53:47.96ID:bKO8QxvP
ジェネリックなメモリ確保はどのみち必要だと思うよ。構文がどうであれ。
あと、動的にコンストラクタとか呼ばないといけないし必要だと思うよ。
個人的にnewはライブラリ屋さんが使えばいいものだと思ってる。
2018/08/08(水) 06:09:55.58ID:d90b/R1Y
placementみたいのがあれば充分
2018/08/08(水) 06:18:49.25ID:bKO8QxvP
タイプ量増えて嫌カモ。
new T[] ってできるのは結構強いと思う。
まぁ、自分でやる事はないけど。
2018/08/08(水) 07:00:42.37ID:/7C7gkY0
A, Bそれぞれコンソールアプリケーションで作成
AがBをCreateProcessする状況を作成しました

Aを実行したらBの専用のコマンドプロンプトが立ち上がって次々に処理をするのかな?って思ってたのですが
実際はAが立ち上げたコマンドプロンプトにBも出力などしてます
これ分離することできないのでしょうか
2018/08/08(水) 07:11:53.05ID:d90b/R1Y
タイプ量って、それは現状の構文での話やん
コンストラクタを実行する構文がたとえば3文字のキーワードでできるなら
その主張は崩れる
2018/08/08(水) 07:12:46.84ID:HlzHxdvD
startコマンド
2018/08/08(水) 07:13:58.46ID:EhLv0UZk
CreateProcess で "start cmd /c B.exe" を起動するんじゃだめ?
2018/08/08(水) 07:16:30.26ID:d90b/R1Y
template <typename T, typename ...ARGS>
T* create(ARGS ...args)
{
auto ptr = (T*)malloc(sizeof(T));
ptr->T(args...);
return ptr;
}
今C++をリメイクするならnewはクビだろ
2018/08/08(水) 07:29:04.25ID:eb4eIp4R
>>603
AllocConsole
2018/08/08(水) 08:30:47.37ID:lcYbehB0
メタプログラミングをやってみたいんだけど、テンプレートが中々難しい
みんなどうやって駆使してる?
2018/08/08(水) 08:31:50.27ID:jzgqxY6J
慣れ
2018/08/08(水) 12:14:27.90ID:rnBqZLRU
LPCTSTRをマルチバイトでもUnicodeでも対応して文字列操作するコードってどう書けば宜しいのでしょうか
612デフォルトの名無しさん
垢版 |
2018/08/08(水) 12:22:29.48ID:oJrY5QK4
>>611
関数名オーバーロード。それを応用するtemplate。の2つかな。
2018/08/08(水) 12:22:37.74ID:NS40+Y1c
>>611
まず、#include <tchar.h>。
次にTEXTマクロ、_Tマクロの使い方を学ぶ。
さらに、<tchar.h>を見ながら、文字列関数呼び出しをジェネリックなものに置き換える。
2018/08/08(水) 12:24:54.57ID:NS40+Y1c
必要に応じて#ifdef UNICODEを使う。
2018/08/08(水) 14:22:56.63ID:oRJqApyO
>>577
お前は未だにPhenomなんてガラクタ使ってるんだっけ
お前は無職だからそれでも恵まれすぎだけどな
2018/08/08(水) 14:33:18.94ID:y2s3oWVB
Phenomってガラクタだったんだっけ?
使い始めてそろそろ10年になるが
現在Windows10が動いているけどな
2018/08/08(水) 17:05:37.41ID:5Rj4GrBF
プログラムの板で、相手の使ってるハードウェアをネタに
悪口を言うのはよろしくないんじゃないか、と思ったけど、
アンカーの先を見たらそうでもないって気になった。

どうやら「固定ハンドルの人への攻撃はルール無用」という
より上位のルールがあるようだ(あくまで個人的な基準)。
2018/08/08(水) 17:11:27.46ID:7VVPJa90
>>617
ちょっとコテハンつけてくれないか?
2018/08/08(水) 18:09:52.75ID:d90b/R1Y
5ちゃんから入ったニワカ君だな
コテハン様は名無しより偉いんだよ
失礼のないようにね
2018/08/08(水) 19:20:38.29ID:35SEMuEM
>>615
よく知っているね、phenomIIx6 1090 で粘っていますよ、zen2 7nm にて大人買いしようと資金を積んでいます…
2018/08/08(水) 19:47:33.67ID:y2s3oWVB
>>620
おれはそのちょっと前のやつ

https://i.imgur.com/VvRofi2.jpg
2018/08/08(水) 20:17:40.85ID:35SEMuEM
>>617
>固定ハンドル
固定ハンドルじゃありません、トリップです!!
2018/08/08(水) 20:31:08.79ID:foEj61l6
ぬるぽ
2018/08/08(水) 20:33:39.72ID:y2s3oWVB
トリップ生成の種も後悔されているから、誰でもなりすませるかと
2018/08/08(水) 20:35:12.86ID:foEj61l6
好きな文字列をトリップにする枝
2018/08/08(水) 21:20:41.90ID:IxvHxUWv
>>611
Tに対応した文字列操作関数だけを使って操作するか、CT2W/CW2TでWに変換して操作するか実質二択。
2018/08/08(水) 21:45:50.76ID:X2pKT1V6
>>623
ガッ
2018/08/09(木) 06:46:59.99ID:YmSdriT+
>>622
ヌル文字列を固定ハンドルにして、
それに QZaw... ってトリップをつけてるのかと。
2018/08/09(木) 06:59:20.10ID:pqAEhCoO
テスト
◆QZaw55cn4c の酉って割れてるよね?
2018/08/09(木) 17:44:07.59ID:HZcgpX+K
ワシのトリップもな。
2018/08/09(木) 19:14:37.37ID:oFkunHGA
この前のローグ、標準ライブラリにメモリ確保お願いしてるのに中でNULLオブジェクトを操作して落ちるようになって詰んだ。。。
もういやー。
2018/08/09(木) 19:46:32.29ID:pqAEhCoO
>>631
cpplintとかInferとかかければある程度は原因絞り込めると思うけど
Winじゃ導入が面倒か
2018/08/09(木) 20:25:08.47ID:oFkunHGA
>>632
返信ありがとう。ヤル気がゴッソリぬけのたのでしばらく放置します。
特殊なこと全くやってないになんでこうなるんやー。
うぅ。。。
2018/08/09(木) 20:59:37.47ID:N7zY56wf
>>633
メモリ管理の問題ということは、特殊なことをやってたかではなくて、基本的なことが正しくできてないということだよ。
プログラム初心者ならメモリ管理やポインタに煩わされない他の言語の方が良いかと思うよ。
2018/08/09(木) 21:08:18.06ID:pNZUF6kv
まずはgoかjavaでもやったらいいんじゃないかね。
2018/08/09(木) 21:16:17.87ID:8qUg7w5I
(ひっそりアップロードするんや…)
2018/08/09(木) 21:21:51.13ID:2CPDzClL
>>633
バグって自分が絶対に大丈夫なはずと思っている箇所に潜んでいる
しばらく放置してから見つけると、意外に簡単に見つかる
2018/08/09(木) 21:47:57.57ID:dPMfUDyX
gimpel の PC-LINTお勧め
2018/08/09(木) 21:58:35.34ID:jXGj01kj
共有メモリでBSTR型のデータを共有してるのだけど
これのデータサイズ取得する方法ある?
対象領域の先頭ポインタを基準にSysStringLen使ってデータサイズとれるかな?って思ったがとれなくて困ってる
2018/08/09(木) 21:59:33.60ID:oFkunHGA
>>637
正解。慢心してた。
とおった!!俺のせいだった。ごめんなさい。
なんでスマポのインスタンス自動確保されると思い込んでたんやろ。ここだけ。
ごめんなさい。ごめんなさい。ごめんなさい。。。、
2018/08/09(木) 22:30:56.92ID:BtZU6oOJ
慢心と呼ぶべきか、脳内キャッシュを利用した最適化と呼ぶべきか。
しばらく放置することで脳内キャッシュが解放され最新データの利用が可能になる、ありふれた光景。
2018/08/09(木) 22:34:40.62ID:rS9AJYq6
>>641
私の場合は、しばらく放置しただけではダメで、リリース(公開)することを契機に問題点が不思議と浮き彫りになる、という感覚を持っています
2018/08/09(木) 22:39:20.96ID:BtZU6oOJ
>>642
リリース(公開)する時の質問の文章を書くことで、脳内のメモリ配置が変わり、脳内キャッシュが破棄されたのでしょう。
2018/08/10(金) 01:22:05.57ID:W2ty1llG
>>639
https://www.artonx.org/collabo/backyard/?BasicString
bstrはちょっと特殊
2018/08/10(金) 02:28:33.68ID:p9jfuJcV
https://dotup.org/uploda/dotup.org1607631.zip
ふー。皆さまのおかげで、最初のAIが階段に到達するまでできました。
とはいっても想像するよりよっぽどチープだけどね。
やっとまともにデバッグできるようになったら、色々仕様変更したい病発動してジレンマに陥ってる。
特にトラップクラスいらねーんじゃね?とか思い出して、根幹を揺るがせつつある・・・。
というわけで、皆様どうもありがとう。

ちなみにgithubにも公開してるけど、ライセンスはmitなので煮るなり焼くなりしていいよ。
そんな酔狂な人間がいるか知らんし、多分同じコンセプトで書き直したほうがいいカモだけど。
githubはソース置き場にしてるだけからgitの操作さっぱりわからん・・・。Orz
2018/08/10(金) 03:17:37.39ID:rT8gQk9M
>>644
URLサンクス
もしかしてサイズ取れないと言うことだろうか
2018/08/10(金) 03:47:22.54ID:B+R4+INY
左様そう考えて差し支えない
ID:rT8gQk9M は近隣住民の安全のために、BSTRをもたず、つくらず、もちこませずを堅持すること
2018/08/10(金) 03:49:46.96ID:p9jfuJcV
https://ideone.com/eDOvCH
これで、Next保存する方法ないですか?
ダイナミックキャストだけかな?
継承したら自分の型忘れるのホント面倒。
2018/08/10(金) 03:49:53.40ID:beAAeNyA
>>645
2018/08/10(金) 04:01:00.88ID:B+R4+INY
>>648
保存(シリアライズ)のインターフェースをBaseに持たせてNextでNextの保存処理を実装したらいいんじゃね
2018/08/10(金) 04:06:44.82ID:p9jfuJcV
>>650
ゴメン。ちょっと舌ったらずだった。
各クラスが持ってるTypeに自分の型を保存する方法ないですか?
継承して記憶喪失になっても復元できるようにしたいのです。
システム内でちょくちょく必要になるのは俺がタコだからなんだろけど。
もちろん、ユーザーコードには見せないようにしますよ。
2018/08/10(金) 04:18:39.10ID:B+R4+INY
型を知りたいというならdynamic castが一番可搬性が高いやり方だと思うが
型を知りたいだけ、なんてことがあるのかどうなのか

普通はダウンキャストしたいという要求とセットのはずで、
ダウンキャストはインターフェースをゼロから周到に設計すればポリモーフィズムで解決できる
再設計をゼロからやれないときだけがdynamic_castの出番、という印象

※ 個人の感想です
2018/08/10(金) 04:35:15.48ID:p9jfuJcV
static_cast<DeleteAster<decltype(p)>::OldType*>(p)->OldTypeMethod();
的なことをやりたいのですよ。
システム制作者が完全に意思疎通してて型がどうなってるか周知って前提なんだろうけど、
継承したものをごっちゃにコンテナに入れたら破綻するんだよなぁ。。。
anyもいいなぁと思ったけど、結局キャストする手間は変わらない。むしろキャスト必須。
なくても何とかなるけど、余計なコード書かないといけないからスマートな方法ないもんかなぁ、と。
2018/08/10(金) 04:38:40.37ID:p9jfuJcV
動的に型を保存する型がほしい。
2018/08/10(金) 04:42:20.85ID:KaDy9gZn
スクリプトすればぁ〜?
2018/08/10(金) 04:45:12.86ID:p9jfuJcV
ですよねぇ。。。はう。
2018/08/10(金) 04:50:41.18ID:KaDy9gZn
usingとかtypedefとかtype traitsとかautoとか使へば、何とかできる気もするが、
さういうコードをなかなか書けぬ人はスクリプト言語へ行くへし。
2018/08/10(金) 04:58:16.48ID:p9jfuJcV
rustがレールに乗ればなぁ。
そういえば、anyはtype_infoを返すメソッドがあるのでので動的にチェックができるみたいだねぇ。
ないよりましだけど、確率になっちゃう。ぐぬぬ。

>>657
そうそう、できそうな気はするんだよね。うーん。。。
2018/08/10(金) 05:13:40.93ID:B+R4+INY
>>657
ID:p9jfuJcVの悩みはコンパイル時に解決できないからusingとかtypedefとかtype traitsとかautoでは_ぽ
(Base* pを扱うコードのビルドでコンパイラが常に*pの型がNextであることを見抜いたり、Nextの詳細を見通せたりするわけではない

というわけでポリモーフィズムでしか解決できん
ID:p9jfuJcVは、クラスごとに異なるOldTypeMethod()を呼び出すインターフェースCallOldTypeMethod()を設けて
BaseやNextそれぞれ毎に、適切なOldTypeMethod()を呼び出す実装を与えなさい

※ 個人の感想です
2018/08/10(金) 05:52:46.45ID:d4sNno4d
実行したいこととオブジェクトの型が一対一対応であるという保証はない。
C++固有のポリモーフィズム機能を使うと他の言語に移植できなくなる。
実行したいことを列挙型なりビットフラグのメンバ変数として保存しておくのが一番楽だろう。
2018/08/10(金) 05:53:49.02ID:0eRJE2kB
テンプレートでダックタイピング的なことをするとか
2018/08/10(金) 05:59:59.43ID:d4sNno4d
追記。
やりたいことが1種類だけなら型と紐づいていても問題ないが、
やりたいことが複数の組み合わせになったら型と紐づいた設計は破綻する。
何がいいたいかというと、アキラメロンということだ。
2018/08/10(金) 06:38:46.33ID:p9jfuJcV
皆さまありがとうございます。無理ぽいことがよくわかりました。

>>659
うーん。
仮想関数との違いがよくわからないなぁ。
プロキシ―オブジェクトってことなんだろうけど。
うーんと、ほしいときって初期化タイミングの調整とかそのへんなのでメインレールはインターフェースでいいんだよなぁ。
どうしてこう融通が利かないのか。設計のせいか・・・Orz

>>660
結局そういうことになるんですよねぇ。。。うーん。

>>661
コンセプトがいるような気がする。
さっき上げたコードをテンプレートとanyで書けば同じようなことはできるけど、エラー吐いたら地獄な気がする。
でも、そっちの方が高機能かもしれんなぁ。anyのキャスト問題を除けば。
2018/08/10(金) 06:40:45.22ID:p9jfuJcV
とりあえず、お付き合いいただきありがとうございました。
今日は寝ます。また。
2018/08/10(金) 07:05:11.27ID:f/eWc4F9
Unicodeの時はwchar_t、マルチバイトのときはcharとして扱ってデータをコピーしたい
その切り替えを処理途中にifdef入れまくるのは不適切だと思うからdefineかtypedefを一度することによって
自動で切り替えられるようにしたいけどtypedefだとできない?

#ifdef unicode
#define tlen wcslen
#else
#define tlen strlen
#endif

int main ()
{
TCHAR a;
int size = tlen(a);
}
2018/08/10(金) 07:07:47.43ID:iZqKv3XP
コピーだけなら簡単
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況