X



C++相談室 part133
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 1fcf-H1rY)
垢版 |
2017/11/24(金) 16:52:50.43ID:WoNXR2ax0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

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

前スレ
C++相談室 part132
http://mevius.5ch.net/test/read.cgi/tech/1507561894/

このスレもよろしくね。
【初心者歓迎】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
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0420デフォルトの名無しさん (ワッチョイ 579f-F7Qh)
垢版 |
2017/12/10(日) 00:52:59.90ID:Rt5tAWZZ0
>>418
なるほど君は知らないんだな。VC++/CLIは混ぜられるんだよ。
君が言っているのはmanagedで、俺が言っているのはunmanaged。

まあ、どうせ君は使わないのだろうし、深く知る必要はないが。
0422デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
垢版 |
2017/12/10(日) 06:32:52.80ID:dE7pgqu30
>>401
protectedこそちゃんと設計しないとメタメタになるだろうが
publicもprotectedもコードの利用者が自由に使えることには変わらんから公開インターフェースには変わらんぞ
お前もしかして「protectedだしメンバ全部下駄雪駄付けて継承先に丸出しするおー(^q^)」ってやってんの?
誰がどんな派生クラス作ってどんなふうにいじくって親クラスのふりして混入させてくるかわからないのに?
世界に発信しないからどうでもいいって?同僚や1年後の自分はたまったもんじゃねえな
0424デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
垢版 |
2017/12/10(日) 10:23:51.33ID:jGY33Ae80
>>423
ただ単にforeground colorまたはbackground colorを変更するだけのために
いちいちオブジェクトを破棄してGDIリソースを開放して再びGDIリソースを確保してオブジェクトを新規作成し直してどうぞ

>>423にとって不幸なことに、この惑星では現実のアーキテクチャーも現実の外部世界も移ろいゆくもの(mutable)なんじゃ
0427デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
垢版 |
2017/12/10(日) 12:12:47.79ID:dE7pgqu30
背景色が暗かったら前景色を明るくして見やすくするとかそういう制御はしないのか?
最初はしないつもりでも後から必要になったりリクエストが来たりしたらどうするんだ?
前景背景以外の第3の色のパーツが増えたらどうする?
アルファチャンネルが増えて半透明時はその裏側の色にも合わせて制御する必要が出てきたらどうする?

インターフェースってのは中のデータメンバーの下駄と雪駄とかそんなレベルで決めるもんじゃないんだよ
お前の言ってることは次元が低すぎるんだよ
0428デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
垢版 |
2017/12/10(日) 12:17:16.01ID:dE7pgqu30
>>426
前景色をいつでも外部から独立に変えて良いオブジェクトならそれで構わないけど
それをforeColorメンバ変数があってそのsetterだから〜みたいな程度の低い議論で決めたんだとしたら
後で大変な苦労をすることになるだろうな
今のお前はしなくてもお前の同僚やユーザーや1年後のお前がな
0429デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
垢版 |
2017/12/10(日) 12:22:05.28ID:jGY33Ae80
>>427
>背景色が暗かったら前景色を明るくして見やすくするとかそういう制御はしないのか?
>最初はしないつもりでも後から必要になったりリクエストが来たりしたらどうするんだ?
>前景背景以外の第3の色のパーツが増えたらどうする?
>アルファチャンネルが増えて半透明時はその裏側の色にも合わせて制御する必要が出てきたらどうする?
setForgroundColor()を備えた低水準なクラスを実現した上で、
ユーザーの好みや用途に合わせた高水準なクラスをかぶせる階層設計にする

なんでもかんでも詰め込んだクラス設計はアレくね?>>427の好みなのかもしれんが
0430デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
垢版 |
2017/12/10(日) 12:28:25.79ID:dE7pgqu30
どういう設計にするかって話じゃなくて
設計を決めるのに最初からデータメンバーと下駄雪駄ありきで考えるのをやめろって言ってるんだが
何一つ伝わってないようで残念だ
0431デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
垢版 |
2017/12/10(日) 12:35:10.91ID:jGY33Ae80
>>430
>設計を決めるのに最初からデータメンバーと下駄雪駄ありきで考えるのをやめろって言ってるんだが
はげどうで、それにたいするスレ内に書かれた情報を前提とする答えが階層設計(>>429
何一つ伝わってないようで残念だ

ていうか
>>427程度では可能性を列挙しているだけで何を作るべきなのか指定したことにならない
仕様提示も無しにクラスの詳細を設計せよとかどんだけ〜
0432デフォルトの名無しさん (ワッチョイ bfe7-F7Qh)
垢版 |
2017/12/10(日) 13:12:04.65ID:dE7pgqu30
427は例えば前景背景色を変えるインターフェースを作るときに考慮しなきゃならなそうな事のほんの一例を挙げただけで
詳細設計しろなんて誰も言ってないんだが

最初に考慮すべきことはそもそも何を実現するつもりなのか、そのためにどういう操作を受け付けなきゃならないかであって、
privateのデータメンバーにbgColorがあるとかはどうでもいいし、必要ならそんなもの後から変えたっていいんだよ
それをデータメンバーありきで脳死で下駄雪駄付けてたら、そのメンバーの存在が公開外部仕様になって簡単に変えられなくなるんだよ

お前さんの例で言うと、不用意にsetFgColor()とsetBgColor()を公開したら、ずっとその2つを外部から独立に自由に変えられるようにしなきゃならなくなるの
本当にそうするべきなのかは、それこそオブジェクトの本来の目的次第で判断することでしょ?
「とにかくデータメンバーにbgColorとfgColorがあるんだからひつようなんです(^q^)」とか抜かしてたらバカで無能だと思うだろ?
お前さんは今そう見られてるんだよ
0440デフォルトの名無しさん (ワッチョイ 9fbd-aiou)
垢版 |
2017/12/10(日) 18:26:16.47ID:jGY33Ae80
>>432
>最初に考慮すべきことはそもそも何を実現するつもりなのか、そのためにどういう操作を受け付けなきゃならないかであって、
いやまさしくおっしゃるとおりで、
グラフィック部品のforeground colorとbackground colorは通常の表示ハードウェアの元では独立に変えられるブツなのだから
ハードウェア寄りなwrapperレベルの実装だとそれぞれ独立に露出するのが正しいという結論に…
(独立に弄っても内部状態の不整合は起きない。これがgetter/setterを公開してもよい基準である

>お前さんの例で言うと、不用意にsetFgColor()とsetBgColor()を公開したら、ずっとその2つを外部から独立に自由に変えられるようにしなきゃならなくなるの
ならない
階層設計の意味がわかっていない?
漏れのやり方で起きることは、Foreground colorとbackground colorの2つを公開したクラスXのインスタンスをいつでも作れるというだけで、
上位水準で要求される操作のみを受け付けるべくXを利用して実現するクラスYではsetFgColor()とsetBgColor()を隠蔽することができる。
(単にYが使うXのインスタンスをprivateにすれば良い

ていうか話を進める前にID:dE7pgqu30には>>426の2行目にお答えいただいてからにしていただきたいですのう…
>>400の話が途中から変わっていることには目をつぶって差し上げても良いので
0443320 (ワッチョイ b7e3-qmOZ)
垢版 |
2017/12/10(日) 22:58:45.66ID:PwvSHD+00
>>441
俺が発端だとしたら書きまくるなんて言ってない
楽に書く方法導入されたかな〜って聞いただけ

されてないのは分かったからもういけど
0444デフォルトの名無しさん (ワッチョイ 9fa6-ANK3)
垢版 |
2017/12/11(月) 01:44:26.10ID:NuxLjCLE0
>>443
残念ながら標準C++には無いねー。

俺の周りでも結構欲しがる人多いんだけど、何が良いのかいまいちわからないなー。
使うときに、変数を扱うような記法で、関数コールが出来るってだけだよね…
一文字減るだけで何が嬉しいのか…
0447デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/11(月) 03:18:45.90ID:hyRKWo4y0
>>444
それについては
to.setBackgroundColor(from.getTextColor());
より、
to.backgroundColor = from.textColor;
の方が読みやすいから俺は否定はしない
0449デフォルトの名無しさん (ワッチョイ ff6e-MWkS)
垢版 |
2017/12/11(月) 06:39:45.71ID:HCkpHsZ20
という、そもそもの話に行き着くだけだな
0451デフォルトの名無しさん (ワッチョイ ff6e-MWkS)
垢版 |
2017/12/11(月) 09:57:11.02ID:HCkpHsZ20
セッターとゲッターをいちいち作るのかという単純極まる話に流れもへったくれもあるか
0453デフォルトの名無しさん (ワッチョイ ff6e-MWkS)
垢版 |
2017/12/11(月) 10:33:50.92ID:HCkpHsZ20
欲しけりゃ作れというCいやBから続くハングリー精神を忘れた主張はいくら喚いても無駄だ
0455デフォルトの名無しさん (ワッチョイ ff6e-MWkS)
垢版 |
2017/12/11(月) 11:08:12.08ID:HCkpHsZ20
そういうおまえさんも、ここ僅か数レスの流れから目を背けているだろうが
0456デフォルトの名無しさん (ワッチョイ 9f21-61ea)
垢版 |
2017/12/11(月) 15:05:22.47ID:HQgmyRrm0
不変条件がある→カプセル化(class)
不変条件がない→露出(struct)

では駄目なの?
0459デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/12(火) 01:07:23.70ID:taGmyuVj0
>>448
お前は
>>444>>447を100回読み直して出直してこい
0463デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/12(火) 05:49:25.74ID:taGmyuVj0
>>462
いいから読み返してこい。自分がどんなトンチンカンなレス返したのか自覚するまで帰ってくるな。
0466デフォルトの名無しさん (スッップ Sdbf-6IXG)
垢版 |
2017/12/12(火) 08:10:48.13ID:R9+tEHmjd
プロパティが常に左辺値として扱えるってなら面白いけど、ただのシンタックスシュガーなんでしょ?
0472デフォルトの名無しさん (ワッチョイ 9fa4-MWkS)
垢版 |
2017/12/12(火) 11:33:45.81ID:UV42xOWp0
あるデータメンバをpublicにしたほうが合理的と判断したならすればいい
そこでいちいち教条主義にとらわれて見えない不安と戦うアフォは
物事の分別がわかるようになるまでROMってろ
0474デフォルトの名無しさん (ワッチョイ 9fa4-MWkS)
垢版 |
2017/12/12(火) 15:47:21.47ID:UV42xOWp0
読むに足る話をしていたつもりなら相当なコレ@だな
0475デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/12(火) 16:11:45.84ID:taGmyuVj0
>>470
コンパイルエラーになるなら問題ないやろ
0477デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/12(火) 16:52:53.52ID:taGmyuVj0
>>476
お前がレスしたコメントが
「それをC++でどうするかって話」に読めたならマジで救いようがないな。
何がどうなってお前の中ではそうなったのか知らんがそれを外に出してくんな。
0482デフォルトの名無しさん (ワッチョイ 9fa4-MWkS)
垢版 |
2017/12/12(火) 18:29:31.41ID:UV42xOWp0
要するに俺様の個人的好みがああだから言語もそれに合わせるべきと言っているだけ
周りと全会一致状態ならともかく批判的な意見に攻撃的な態度をとるだけ
どっから見ても単なる厨二病の自己チュー
0483デフォルトの名無しさん (ワッチョイ 9fa4-MWkS)
垢版 |
2017/12/12(火) 18:31:17.47ID:UV42xOWp0
まあ言論の自由なんだけどね
やってて恥ずかしおまへんか?
0486デフォルトの名無しさん (ドコグロ MM4b-45bT)
垢版 |
2017/12/12(火) 18:45:22.28ID:v/pth21HM
マジで引っ込みつかなくなってるんだな...

>>443 そろそろプロパティが導入されたかなぁ?
>>444 されないねぇ、何が嬉しいのかよくわからんけど
>>447 メソッドが読み書きするより読みやすいでしょ

>>448 変更時に処理を追加できないだろうが

一同 ファッ!?、ヤベーよ、こいつ w
0492デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/12(火) 19:55:46.38ID:taGmyuVj0
出来るけどテンプレート引数やautoと相性悪いからあまりオススメしない
0499デフォルトの名無しさん (ワッチョイ 579f-F7Qh)
垢版 |
2017/12/12(火) 22:20:18.74ID:4svaTAZj0
>>498
JavaScriptにはあるよ。
便利だが、基本的にアジャイルで頻繁に変更する環境向けであり、
C++みたいにゴリゴリやりたいところに向くかは少し疑問。
とはいえ、俺は導入に賛成だが。
0500デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/12(火) 22:24:39.30ID:taGmyuVj0
>>498
Python Kotlin Swift
0502デフォルトの名無しさん (ワッチョイ 9780-yV1O)
垢版 |
2017/12/12(火) 22:30:05.03ID:taGmyuVj0
>>501
Storedプロパティに限定した話だったの?
俺そっち要らない派だからどうでもいいんだけど。
0508デフォルトの名無しさん (ワッチョイ 1f7e-qmOZ)
垢版 |
2017/12/12(火) 23:10:28.93ID:L7nvt31i0
>>505
プロパティ便利すぎとか言ってる同僚が書いた200行を超えるゲッターや初回だけ挙動が違うセッターなど
publicな変数も混ざってる環境なため普通の変数だと思ってあっちこっちで参照していたら気づかないうちに激重になっていた
どこがボトルネックになっているのか探すのに時間がかかった
0510デフォルトの名無しさん (ワッチョイ 579f-F7Qh)
垢版 |
2017/12/12(火) 23:43:37.47ID:4svaTAZj0
>>508
サンクス。

> どこがボトルネックになっているのか探すのに時間がかかった
多分これがC++がプロパティを入れない理由だと俺は思っているが、
今のC++の勢いならどうせいつか入れるのだろうとも思っている。

> 200行を超えるゲッター
これはあまり行儀はよくないが、
メソッドとフィールドの文法的区別をなくすのがgetterでもあるから、
正しいといえば正しい。

> 初回だけ挙動が違うセッター
これはコンストラクタでやるべきものをセッターに持って来たことが悪い。
つまり、セッターの問題ではない。
セッター文法がこれを誘発するかと言えば、関係ないと思うから、プログラマその人の問題だと思う。

で、C++は一応「プログラマは正しくプログラミングできる」という前提だから、
どうせプロパティもいつか入れるんでしょ、と思っている。
その時には、「getterには重い処理を入れない」等の掟が出来るのだと思う。
0511デフォルトの名無しさん (ワッチョイ 9f12-F7Qh)
垢版 |
2017/12/13(水) 00:53:04.54ID:3t1TagYk0
=での演算子のオーバーロードがsetterに相当する
その辺りを自動でやってほしい
他、+=やらの演算子も余りにも面倒なのでどうにかしてほしい

pythonではそういう軟弱な特殊メソッドがあるが軟弱なのでC++の感触には合わない
さらに困難で不可解な記述方法を編み出すべきだ
0513デフォルトの名無しさん (ワッチョイ 57b3-wlc6)
垢版 |
2017/12/13(水) 01:04:25.30ID:VGyxWnO70
C#についてはサッパリだけど、調べたらかなり便利そうな機能だね、処理を差し挟めるというか?

C++で「stringのように振る舞う値」を作ろうとするとまずその型から定義しなきゃならないし
継承でやっつけることも可能だけど、問題点もある
さらに「intのように振る舞う値」となると継承不可だし、各種演算子をいちいち定義しないといけない

型を定義したいわけじゃなく、ある型のインターフェースを持ちつつアクセス時の処理を入れたいだけ、ってのは
確かにC++にも欲しくなるね

大した例えじゃないと思うけど、いずれ似たようなことが出来るようになったらいいなぁ
0514デフォルトの名無しさん (ワッチョイ 5704-IpD3)
垢版 |
2017/12/13(水) 01:07:04.42ID:SIeP7pZg0
プロパティって要するに、セッターは1引数の関数って場合が多いような。ゲッターは引数無しの関数。
カッコつけないだけで可読性がそこまで上がるもんかと思う。
■ このスレッドは過去ログ倉庫に格納されています

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