C++相談室 part126 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/08/13(土) 11:24:45.65ID:NPYsKJkE!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part125
http://echo.2ch.net/test/read.cgi/tech/1463761261/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
0348デフォルトの名無しさん
2016/09/02(金) 07:35:34.05ID:MC2dvnuP0349デフォルトの名無しさん
2016/09/02(金) 07:36:05.31ID:sd/G3GoC0350デフォルトの名無しさん
2016/09/02(金) 07:49:11.95ID:Vf4h0u1D> 戻り値に「実際に格納された値」を入れて返す。
こっちはまだわからなくもないが
> 格納しつつ値も使う、ができてちょい便利。
みたいな設計はどうかと思う
0351デフォルトの名無しさん
2016/09/02(金) 08:01:45.25ID:/uIui9G6(a = b) = c;
みたいな20世紀の設計思想だな
0352デフォルトの名無しさん
2016/09/02(金) 08:01:48.98ID:5Aji0+2+メソッドチェーン出来て便利だよね。
0354デフォルトの名無しさん
2016/09/02(金) 08:44:56.31ID:OksuLk+6a.val(b.val() + c.val()) みたいなやつ
というかどうしてもプロパティが欲しけりゃ演算子オーバーロードで真似っこできるじゃん
0355デフォルトの名無しさん
2016/09/02(金) 08:48:54.95ID:xzsbRhmnプロパティ分かってない奴か? コードを示して見ろ。
0356デフォルトの名無しさん
2016/09/02(金) 09:12:04.14ID:+CUdjKtmこんな感じか?
0357デフォルトの名無しさん
2016/09/02(金) 09:14:47.55ID:OksuLk+6ググれば普通に出るが?
なんでそんなに必死なの
http://boost.2283326.n4.nabble.com/the-best-possible-c-properties-implementation-tt2626498.html
0358デフォルトの名無しさん
2016/09/02(金) 09:20:57.20ID:OksuLk+6そうね、そういう感じ
0359デフォルトの名無しさん
2016/09/02(金) 10:36:49.94ID:AFnhG1K/無理やりオーバーライドできるようにしなくていいよ。
既にコードも必要以上に複雑化しててgetter/setterの方がマシなレベルだし。
0360デフォルトの名無しさん
2016/09/02(金) 12:07:39.19ID:+CUdjKtmNVIって知ってる?
0361デフォルトの名無しさん
2016/09/02(金) 12:09:10.62ID:rUpx5Cs1タイプ量の問題ならマクロで解決出来るし。
0362デフォルトの名無しさん
2016/09/02(金) 12:26:51.71ID:6Qab/oE8これからもどんどん新しい機能を取り入れてどんどん
わけがわからなくなるといい。
0363デフォルトの名無しさん
2016/09/02(金) 12:41:00.31ID:1fpVQ5H80364デフォルトの名無しさん
2016/09/02(金) 12:49:08.18ID:6Qab/oE8いまさら後戻りはできない。
0365デフォルトの名無しさん
2016/09/02(金) 18:00:48.43ID:96M6CE+e現在C++にないから不要な機能だ、と突っ張るのは危険かも知れないよ。
いつか「次の規格から『C#のプロパティ』と同様の機能が追加」と
発表されるかもしれない。これまでもそうやって肥大化してるじゃない。
0366デフォルトの名無しさん
2016/09/02(金) 18:28:49.74ID:qjeLwgBZC#のプロパティは言語的にメソッドとは違うものとして認識出来るようになっている
そこから様々な便利さが出てきている
0367デフォルトの名無しさん
2016/09/02(金) 19:27:06.33ID:nL/2u0CXマクロで出来ることではなく、
マクロに頼っていたことを、
マクロを使わずに出来るようにしてきたんだよ。
スコープに従わないオブジェクト指向の敵との戦いだ
0368デフォルトの名無しさん
2016/09/02(金) 19:37:33.13ID:XrGCfAOVマクロみたいなもん。
0369デフォルトの名無しさん
2016/09/02(金) 20:24:08.55ID:8Rlh5aGL0370デフォルトの名無しさん
2016/09/02(金) 20:41:05.83ID:Wj/juS310371デフォルトの名無しさん
2016/09/02(金) 20:49:32.19ID:W5XwdQxsあれはコンパイルタイムに計算してるんだよ。
0372デフォルトの名無しさん
2016/09/02(金) 20:49:47.52ID:1fpVQ5H80373デフォルトの名無しさん
2016/09/02(金) 20:50:16.78ID:BGbCtBYN0374デフォルトの名無しさん
2016/09/02(金) 20:52:42.81ID:W5XwdQxs0375デフォルトの名無しさん
2016/09/02(金) 22:57:15.93ID:Q3H4IaZb0376デフォルトの名無しさん
2016/09/02(金) 22:59:57.14ID:3Xz3H/8a0377デフォルトの名無しさん
2016/09/02(金) 23:04:13.81ID:W5XwdQxsコードを全部どけて数字一個になる日も近い。
0378デフォルトの名無しさん
2016/09/02(金) 23:12:20.33ID:1fpVQ5H80379デフォルトの名無しさん
2016/09/02(金) 23:30:26.24ID:Q3H4IaZb0380デフォルトの名無しさん
2016/09/02(金) 23:32:54.48ID:1fpVQ5H80381デフォルトの名無しさん
2016/09/02(金) 23:35:19.44ID:W5XwdQxs0382デフォルトの名無しさん
2016/09/03(土) 00:45:41.77ID:WTZrMZ5J<algorithm>の中身がおそろしいことになりそう
0383デフォルトの名無しさん
2016/09/03(土) 02:05:00.69ID:VnUB3qPQ43ですが
0384デフォルトの名無しさん
2016/09/03(土) 02:08:56.14ID:VnUB3qPQ0385デフォルトの名無しさん
2016/09/03(土) 02:12:17.57ID:qWYFFL/Sなんすかそれ。
0386デフォルトの名無しさん
2016/09/03(土) 07:03:39.80ID:ZkDRxv2v最適化を否定するのか?
0387デフォルトの名無しさん
2016/09/03(土) 07:04:51.23ID:ZkDRxv2vbsearchみたいにな
0388デフォルトの名無しさん
2016/09/03(土) 09:55:01.98ID:MIqeGybs使うことはあっても、書くことはないだろ
0389デフォルトの名無しさん
2016/09/03(土) 10:03:25.99ID:2vnq4BB30390デフォルトの名無しさん
2016/09/03(土) 11:15:11.07ID:NvcWw3DBキミの周りではそうかもしれないけど、templateみたいな便利なものを使えないようじゃ現代のプログラマとしては失格だと思います
てかテンプレートってそんなに難しいか?
0391デフォルトの名無しさん
2016/09/03(土) 11:47:23.77ID:KpYZ86ntそれだけでテンプレートのメリットは十分に享受できる。
0392デフォルトの名無しさん
2016/09/03(土) 11:48:35.81ID:2vnq4BB30393デフォルトの名無しさん
2016/09/03(土) 12:11:48.21ID:NXr2sGOM汎用性があって他人も実際に使えるレベルとなると難しいかもしれんが、自分が使う範囲内では普通に書くだろう。
はじめからtemplateを書くんじゃなくて自分用のユーティリティとかをtemplate化することも含めればけっこうある。
0394デフォルトの名無しさん
2016/09/03(土) 12:23:53.61ID:ZkDRxv2vほんこれ
0395デフォルトの名無しさん
2016/09/03(土) 12:35:37.51ID:UwaIhkeWもっと為になる話をしろやカス
0396デフォルトの名無しさん
2016/09/03(土) 12:54:22.03ID:e++gk4lZ謝るしか無いわ、ホントごめん
0397デフォルトの名無しさん
2016/09/03(土) 12:56:30.19ID:2vnq4BB30398デフォルトの名無しさん
2016/09/03(土) 13:22:16.46ID:xlYZjvy0Eの計算結果をAで取りたい要望が新しくでてきたときってみんなならどう実装する?
条件としては、
・AはwhileループでBを呼び出し続ける
・Eの最新の計算結果はループで毎回使う
・CがDをnewしてるから、単純なgetterとかじゃ取れない
1. 引数が増えるのは仕方ないが、A~Eに全て引数を追加する
2. Eでstaticなグローバル変数を作る。Aからはgetterで取得する
一応思いつくのはこのあたりなんだけど、もっとスマートなやり方ってあるかな?
0399デフォルトの名無しさん
2016/09/03(土) 13:25:09.63ID:WhBzeO8KメソッドDをCがnewする?なんか説明が胡散臭いんだけど、普通に戻り値で返すのはダメなん?
0400デフォルトの名無しさん
2016/09/03(土) 13:31:49.96ID:ftE9LPfhまた困ることになる。
Contextクラスを追加して、計算に必要な情報はそこに集約させろ。
そうすればどの階層からでも必要な情報を取れる。
0401デフォルトの名無しさん
2016/09/03(土) 13:34:05.21ID:xlYZjvy0すまん、説明が適当だった
CはDメソッドがあるクラスをnewしてるってこと
DClass dClass = new DClass()
C() {
dClass->d();
0402デフォルトの名無しさん
2016/09/03(土) 13:36:43.61ID:xlYZjvy0ごめん、途中で送信しちゃった、
CはDメソッドがあるクラスをnewしてるってこと
C() {
DClass dClass = new DClass()
dClass->d();
}
戻り値はEから外部システムに送信が成功したかどうかを表すbool値がすでに返されてるんだ
>>400
Contextクラスか・・自分は使ったことないし、よく理解できてないからググってみるわ
ありがとう
0403デフォルトの名無しさん
2016/09/03(土) 13:40:54.20ID:2vnq4BB3hoge B::get_E(){
D *d = c.create_D();
0404デフォルトの名無しさん
2016/09/03(土) 13:47:29.68ID:e++gk4lZ何らかの方法で渡すようにすれば、最小限のコード修正で済むよってことじゃない?
0405デフォルトの名無しさん
2016/09/03(土) 13:51:40.11ID:2vnq4BB3そのCの戻り値にDの戻り値のEを入れてBが受ければいいんじゃないのか
0406デフォルトの名無しさん
2016/09/03(土) 13:58:09.73ID:Px0qkqVR引数を追加する方法を取るとして、楽するならば
一旦引数を構造体にして、後で追加したい場合構造体のメンバーを追加する形にする
全部の関数はその構造体を引数にしていれば、好きな構造体メンバーを追加しても形は変わらない
0407デフォルトの名無しさん
2016/09/03(土) 13:58:29.96ID:Px0qkqVRおれはや
0408デフォルトの名無しさん
2016/09/03(土) 13:59:56.32ID:e++gk4lZ既に戻り値は他で使われてるらしいし
そのやり方だと、参照渡しなんかが現実的じゃない?
0409デフォルトの名無しさん
2016/09/03(土) 14:00:12.38ID:WhBzeO8K「全て引数を追加する」がContextかなんかの参照引数を渡してまわる方法だと思ったんだけど、違ったんかな?
戻り値を変えたくないならそうするしかないと思うよ。
0410デフォルトの名無しさん
2016/09/03(土) 14:01:01.19ID:ZkDRxv2v気がついたやつがやれ
指図すんなクレクレ厨め
0411デフォルトの名無しさん
2016/09/03(土) 14:05:10.90ID:2vnq4BB3戻り値なんてpairなりtupleなりでいくらでも増やせばいいじゃん
周囲に影響を出したくないならそこから特定の値だけを取り出す関数でも噛ませればいい
0412デフォルトの名無しさん
2016/09/03(土) 14:14:55.80ID:4FUmxt1NAだけが知りたいなら素直にEがログ残せば良いと思う。
中間層が知りたいなら返してやらなきゃならんだろうけど、B→Eが他の部分で使われてたら関連するのビルドし直しだしテストし直しだし、出し直さないといかんのでは?
0414デフォルトの名無しさん
2016/09/03(土) 15:45:28.04ID:KoWGZcqO0415デフォルトの名無しさん
2016/09/04(日) 06:52:12.75ID:5SDmlLW2現在、RAD Studio(Delphi、C++Builderのセット)が無料でダウンロード可能ですよ
右側のStarter Edition100% Offをクリックするとダウンロードページに飛べます。
(無料ダウンロードは、2016年8月22日から9月9日までの期間限定)
0416デフォルトの名無しさん
2016/09/04(日) 06:58:26.93ID:5SDmlLW2https://www.embarcadero.com/jp/products/cbuilder/downloads
現在、C++Builderが無料でダウンロード可能
右側のStarter Edition100% Offをクリックするとダウンロードページに飛べます
(無料ダウンロードは、2016年8月22日から9月9日までの期間限定)
DelphiとC++Buiderは別個にダウンロードが必要な模様
(無料ダウンロードは、2016年8月22日から9月9日までの期間限定)
0417デフォルトの名無しさん
2016/09/04(日) 07:03:58.75ID:5SDmlLW20418デフォルトの名無しさん
2016/09/04(日) 07:28:40.73ID:uvifPYcj「30日間だけ無料で使えます」バージョンじゃないのかな。
"Try C++Builder FREE for 30 days" って
ダウンロードできる期間が30日間、じゃないよね。
>>415-416 に出てる期間は30日には足りないし。
0419デフォルトの名無しさん
2016/09/04(日) 09:09:03.52ID:xp6EP8jqC++ Builder
https://www.embarcadero.com/jp/products/cbuilder/starter/promotional-download
Delphi
https://www.embarcadero.com/jp/products/delphi/starter/promotional-download
0420デフォルトの名無しさん
2016/09/04(日) 09:17:51.17ID:ZU1xzEkS簡単だと言い張って可読性の低いバギーなもん作ってよこす奴が多いから
テンプレートは嫌いなんだよ。
STLで十分。
0421デフォルトの名無しさん
2016/09/04(日) 09:56:16.37ID:ZZxj7Xyl0422デフォルトの名無しさん
2016/09/04(日) 10:13:47.98ID:xp6EP8jq> 簡単だと言い張って可読性の低いバギーなもん作ってよこす奴が多いから
理由になってなくて笑た
0423デフォルトの名無しさん
2016/09/04(日) 10:22:29.27ID:GcCwBDUy特定の人間でなく周りに多いのなら受けるお前の方に問題があるんじゃないか?
0424デフォルトの名無しさん
2016/09/04(日) 10:39:20.02ID:GZCXAM8t最も傑作でおめでたい人種
0425デフォルトの名無しさん
2016/09/04(日) 12:40:13.35ID:+mIHXAwk別にフルに使いこなせなくても恩恵は受けられるだろうにw
0426デフォルトの名無しさん
2016/09/04(日) 13:31:30.85ID:u29z8UDZそういう進歩を捨てた人間は技術者とは認めてないわ
0427デフォルトの名無しさん
2016/09/04(日) 13:58:48.62ID:6rO3xNqX最後の2行は2016年度最強の名言だな
0428デフォルトの名無しさん
2016/09/04(日) 14:05:26.02ID:VQnaPYaYテンプラ屋でもやれば?
0429デフォルトの名無しさん
2016/09/04(日) 14:05:45.23ID:X6kuqpOwプリプロセッサーが嫌いな人とか、iostreamが嫌いな人とか人それぞれ
0430デフォルトの名無しさん
2016/09/04(日) 14:06:53.24ID:6rO3xNqX久しぶりに聞いたな
0431デフォルトの名無しさん
2016/09/04(日) 14:07:38.02ID:OnzMHuuEまずはSTLが何の略語なのか調べてみよう!
0432デフォルトの名無しさん
2016/09/04(日) 14:17:00.28ID:xp6EP8jq嫌いな機能はあってもいいけどその理由が >>420 とかなのはねぇ
0433デフォルトの名無しさん
2016/09/04(日) 14:45:42.58ID:bYyi8Nkm使わないならCでもやっててください
0434デフォルトの名無しさん
2016/09/04(日) 14:52:46.08ID:VQnaPYaYで、なぜかえばっている
0435デフォルトの名無しさん
2016/09/04(日) 14:54:45.23ID:Zvr3allzテンプレートは最高。
0436デフォルトの名無しさん
2016/09/04(日) 15:16:44.85ID:9+LtAjSlforで回して、比較してるだけとかwww
積極的に使う理由がない
0437デフォルトの名無しさん
2016/09/04(日) 15:23:23.36ID:u29z8UDZ0438デフォルトの名無しさん
2016/09/04(日) 15:58:19.56ID:dwel9f30C++のテンプレートが使えたらなあって思うことはたまにある
0439デフォルトの名無しさん
2016/09/04(日) 16:51:50.12ID:1H4SDZ6a0440デフォルトの名無しさん
2016/09/04(日) 17:03:58.61ID:u29z8UDZ0441デフォルトの名無しさん
2016/09/04(日) 17:05:46.48ID:dwel9f30似たようなのはあるし、大体はそれで問題ないんだけど
テンプレートとは根本的な仕組みが違うので、特殊化とか微妙に出来ることに差があるのよね
0442デフォルトの名無しさん
2016/09/04(日) 17:12:09.12ID:UDXdUcTkJITコンパイル時に生成してるもんな
だからサイズは小さいけどC++のtemplateとは根本的に考え方が異なる
おまけにオブジェクト同士を演算しようとするとコンパイルエラーになるので
dynamic、つまりリフレクションを使うしかないという
0443デフォルトの名無しさん
2016/09/04(日) 18:39:26.39ID:c++wF4a40444デフォルトの名無しさん
2016/09/04(日) 18:54:35.76ID:ZZxj7Xylおおすげーおめでとう
0445デフォルトの名無しさん
2016/09/04(日) 19:14:14.87ID:1H4SDZ6a言語機構が違うから実装も異なるのは当たり前。
それがどう実用上影響するのかを書けよ。
当たり前だが、俺はC#のジェネリックと
C++のテンプレートの機能上の様々な相違点(例えばintを引数に取れないとか)は知った上で、
おまえさんの教育のために質問してるからな?
勘違いするなよ。
0446デフォルトの名無しさん
2016/09/04(日) 19:16:44.51ID:1H4SDZ6aC++でできるtemplate<int N>
みたいなのがC#ではできないって意味な。
馬鹿が勘違いするといけないから。
0447デフォルトの名無しさん
2016/09/04(日) 19:25:27.22ID:OnzMHuuEおおっ!
0448デフォルトの名無しさん
2016/09/04(日) 21:25:33.06ID:pHvOGCAw> は? C#にも名前は違うけどあるだろボケ
ジェネリックとテンプレートが同じだといいたいのかな?
ガチなアフォ登場したなwww
■ このスレッドは過去ログ倉庫に格納されています