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/05(日) 08:56:46.93ID:WhsUmrtL
ツッコミどころはいっぱいあるけど
とりあえずGameIssue.hの中でRougeStageの定義が見えてないからincludeしろ
2018/08/05(日) 17:21:41.90ID:JAQP+wl+
>>506
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
「変数を参照しているのか逆参照しているのかがいつもわからなくなる、だから必ずポインタを使う。アスタリスクが思い出させてくれるから」

C++ の参照は、呼び出し元の記述では参照として渡しているつもりなのか、実体を渡しているのかは区別できず、
呼び出し先の宣言で、はじめて参照か実体かがわかるんですね

個人的には C# のように、呼び出し側でも参照渡しを明示するのがスマートだと思います
そのコーディング規約は良心的だと思います
2018/08/05(日) 17:44:24.77ID:kXrZdLCy
>>553
参照渡しを明示、とは具体的にどんな方法でしょう?
2018/08/05(日) 17:48:52.51ID:3KDX12Zf
ref とかoutとかじゃね?
2018/08/05(日) 17:55:52.90ID:JAQP+wl+
>>554
https://ideone.com/FMEesh
呼び出し側にもキーワード "ref" を記述します
2018/08/05(日) 18:07:51.68ID:lZNE8En/
ゲーム的にはコレか?

Rog-O-Matic - Wikipedia
https://en.wikipedia.org/wiki/Rog-O-Matic
2018/08/05(日) 18:26:33.87ID:kXrZdLCy
>>556
C#ではなくC++での方法を聞きたかったのですが (^_^;)
2018/08/05(日) 18:32:14.36ID:yKLkGD1M
>>506
constなしで参照渡しするなっていうコーディング規約ならgoogleも採用してるよ
2018/08/05(日) 18:34:25.86ID:QdoPuPH9
立てました。移動はご自由に。

C++相談室 part138
https://mevius.5ch.net/test/read.cgi/tech/1533459756/
2018/08/05(日) 18:35:44.95ID:C8NdcnMU
>>558
お前はC++とかより日本語の勉強しなよ…
2018/08/05(日) 18:56:17.20ID:K/INtz2h
単純にc++だけで閉じてれば参照で統一ってのもありだろうけれど
c++ってそういう言語じゃないんだよね。
大抵大規模なコードは過去のcソースとごっちゃになってる。
2018/08/05(日) 19:04:35.58ID:lZNE8En/
>>551
まずは非常にどうでもいいことだが、AddBug(SharedItem I) こういうモノがあると非常に縁起が悪い

他、小姑みたいなスペルミスの指摘は以下

Sheld盾の綴りはshield (Fieldと同じ原理)
Acsessとaccess、
CollectoerとCollector
TyleとTile
InfmationとMakeTemporaryInfomationとinformation
Initilaize、Initialize
PraramA、parameterA

RougeStage.hとRogue
564デフォルトの名無しさん
垢版 |
2018/08/05(日) 22:24:16.29ID:yKLkGD1M
いい加減な方法でビルドはできるようにしたのに遊べないよ!
なんとかしろ、作者

GameIssue.h 12行目付近の
class TemporaryInfmation;
をいかに書き換える。
//class TemporaryInfmation;
template <typename RougeStage> class TemporaryInfmationTmpl;
using TemporaryInfmation = TemporaryInfmationTmpl<RougeStage>;

RougeStage.hの3行目付近の
class RougeStage;
~
TemporaryInfmationTmpl(RougeStage* RS) {
をいかに書き換える。
template <typename RougeStage>
class TemporaryInfmationTmpl {
public:
TemporaryInfmationTmpl(RougeStage* RS) {

StatusCollector.hのStatusクラスの
SetDirection()が2個定義されているのでどちらかを消す。
565551
垢版 |
2018/08/05(日) 23:51:00.40ID:xG+zmDln
こんにちは。色々ご指摘ありがとうございます。
これまだ、脳内コーディングでシステム組んだだけでコンパイルが通って無いように、デバッグさえしてません。
なんとなーく、ローグのAI書いたら面白いんじゃないかと思って書き始めたのですが、沼にハマってしまいました。
とりあえず、前方参照の件は解決したみたいです。
その後大量のエラーと格闘していますが、支離滅裂なエラー(?)が大量に出ていて吐きそうです。

とりあえず、この件については閉めます。
ありがとうございました。
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に自分の型を保存する方法ないですか?
継承して記憶喪失になっても復元できるようにしたいのです。
システム内でちょくちょく必要になるのは俺がタコだからなんだろけど。
もちろん、ユーザーコードには見せないようにしますよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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