- 1 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 21:04:54 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part66 pc12.2ch.net/test/read.cgi/tech/1231640498/ ※part63, part66 が重複していたようですので part69 としました。
- 449 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:09:35 ]
- 書き忘れました
windowsで使えるものをお願いします
- 450 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:10:55 ]
- >>448
よくわからないのでとりあえずぐぐってみます ありがとうございます
- 451 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:13:22 ]
- >450
WinならMinGW まあgccなんだけどな
- 452 名前:デフォルトの名無しさん [2009/05/24(日) 21:13:37 ]
- >>447
Visual C++ Express 2008 www.microsoft.com/japan/msdn/vstudio/Express/
- 453 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:15:33 ]
- >>451-452
レスありがとうございます
- 454 名前:デフォルトの名無しさん [2009/05/24(日) 21:35:25 ]
- Toubo C++
- 455 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:23:27 ]
- >>454
初めて聞いた。 そしてググってみてちょっと面白かった。
- 456 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:28:58 ]
- 7件しかヒットしないぞ?
しかも全部中国。
- 457 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:44:48 ]
- 昔はTurboCといえば、M$としのぎを削った人気コンパイラだったのだよ。
- 458 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 04:02:59 ]
- いやTouboだし。
- 459 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 05:23:12 ]
- Toubo C++
検索したら漢字ばっかで いじる勇気がでない。
- 460 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 06:40:45 ]
- JIS X3014 6.6.3 return の 2 の最終行、「未定」が「末定」になってるw
- 461 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 07:46:16 ]
- しばらくVBAばっかりいじってたから、C++のウィンドウの扱いが面倒に思えて困る
いつもVCの空のプロジェクトにダイアログリソース突っ込んで出してるんだが ひょっとして空のプロジェクト使わなければC#とかみたいに簡単に扱えるのかな? 空じゃないプロジェクトって最初からコードいっぱい書いてて抵抗あったから今まで触ったこと無いんだ
- 462 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 07:48:25 ]
- スレ違いすぎるだろ…
- 463 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 08:31:50 ]
- >>461
vcでポトペタできるのはダイアログだけだよ ウィンドウはムリポ スケルトンコードは慣れかな どうせ似たようなコード書くんだし 続きはVSスレかWinAPIスレかMFCスレで
- 464 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 08:46:11 ]
- 461です、スレ違いすまんかった
覗いてみた感じここの奴は視野が広そうだったから、ここで聞いてしまった 数年前に比べて大して便利になってないという事だな 昔作ったスケルトン掃除して使ってみるよ、ありがとう
- 465 名前:デフォルトの名無しさん [2009/05/25(月) 19:30:32 ]
- blitz::Arrayって何を意味してる? ググってもわからんかった
- 466 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:46:06 ]
- >>465
C++の言語に関する話としては blitzというクラスの、Arrayというメンバ。もしくは、blitzという名前空間に含まれる Array というもの。 実際ぐぐってみたところ、Blitz++というライブラリがあるみたいだね。 このライブラリでblitzという名前空間を使っているようだ。
- 467 名前:466 mailto:sage [2009/05/25(月) 19:47:15 ]
- 英語が苦手で無いなら以下をどうぞ。
ttp://www.oonumerics.org/blitz/docs/blitz_2.html
- 468 名前:デフォルトの名無しさん [2009/05/25(月) 20:11:46 ]
- >>467
回答どうも 軽く読んでみた。 じゃあどうやら 『blitz::Array< int, 2 > A 』 って宣言だと 『中に整数値の入る2次元の行列式の定義をbiltzっていう名前空間でやってる』って感じでいいのかね Arrayは直訳で行列じゃなくて配列なのが気になるんだけどね・・・
- 469 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:15:59 ]
- >>468
細かいとこちょっと違うけど概ねそんな感じ。
- 470 名前:デフォルトの名無しさん [2009/05/25(月) 20:21:33 ]
- >>469
ごめん Cは前々からやってたんだけどC++は最近独学で始めたばっかりなんだわ… で、違うところって? (俺の知識が浅いから、伝わらなそうだったらスルーしてくれ)
- 471 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:24:23 ]
- >>470
ごめん、ちょっと忙しくなるから、後でまた来るわ そのときまでに他のレスがついてなかったら書くよ
- 472 名前:471 mailto:sage [2009/05/25(月) 21:07:14 ]
- まず、blitz::Array そのものは blitz名前空間の中に入ってるが、
blitz::Array< int, 2 > A; とした場合、(これ自体をblitz名前空間の中に書かない限り)このAはblitz名前空間には入らない。 あと、「行列式」じゃなくて「行列」だな。(似てるけど意味が違う)
- 473 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:10:27 ]
- 行列式でいいだろ
行列を表すexpressionなんだから determinantのことを言いたいなら、それは揚げ足取りと言うものだ 感心しない
- 474 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:10:55 ]
- C++始めたばかりなら名前空間をよく分かってないかもしれんが
まあ、ちょっと語弊があるけど “blitz::Array<int,2>” で1つのクラス名だと思ってしまってもよい。 int a; がint型の変数aであるのと同じように blitz::Array<int,2> a; は blitz::Array<int,2> 型の変数aだ。 名前空間ってのは、例えばライブラリ作成者がArrayっていう名前のものを提供している場合、 利用者のコードにもArrayってのがあると名前が衝突してしまって不都合だから、 名前がぶつからないように blitz:: という修飾をつけてるんだと思えばよい。
- 475 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:12:06 ]
- >>473
そうか? 俺はどうしても気になるし明確に誤りだと思うが、まあ揚げ足取りと取られるならこれ以上は言うまい。
- 476 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:14:04 ]
- >>473
アホだろお前。
- 477 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:55:28 ]
- 行列式は駄目でしょ
- 478 名前:470 [2009/05/25(月) 22:04:48 ]
- なんか複数人からレスもらってるみたいで、皆さんどうもありがとう
blitz::Array<int,2> 型の変数aって感じは掴めてたんだけど、そもそもblitz::Arrayは何を表現するのかが不明で困ってたのよ それはそうとプログラム板って初めて来たけどID表示ないんだな、不便じゃない?
- 479 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:13:22 ]
- >>476
そういう言い方はたとえ2chでもどうかと思うぞ まぁでも 行列と行列式は…何と何くらい違うんだろ。ブドウとグレープフルーツくらい?
- 480 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:16:39 ]
- >>478
スクリプト書けばID丸わかりだから不便じゃないよ。
- 481 名前:デフォルトの名無しさん [2009/05/25(月) 22:53:31 ]
- IDが分からなくても別に不便を感じたことない。
- 482 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:01:25 ]
- Win32APIスレはなりすましで大変なことに…
- 483 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:06:44 ]
- 別に大変じゃないし
- 484 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 10:34:48 ]
- >>395
A(int i) { i = hoge; } ↑ は何をしたいの?
- 485 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 15:55:38 ]
- とてもサイズの大きなメンバ変数があったとき、
「そのメンバ変数のポインタを返すようなメンバ関数を作る」か、 「そのメンバ変数のコピーを返すようなメンバ関数を作る」か、 どちらがオブジェクト指向としてはよろしいのでしょうか? 前者だと、privateなメンバ変数に対して外部からタッチしてしまうことになりますが、 無駄が少ないように思えます。 後者だとprivateなメンバ変数を保護(?)できるというか、そういう考え方に則しているような気がしますが、 無駄にメモリを食ってしまう気がします。 完全に独学のため、ちょっと意味不明な単語が混じっているかもしれませんが、 教えてください。よろしくお願いします。
- 486 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:03:49 ]
- >>485
どちらも問題外 クラスの設計をし直せ
- 487 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:11:05 ]
- int gethoge();のような関数を作るのはよろしくないということなんでしょうか?
↑だとintのコピーを返す関数に当たると思うのですが、問題外となると、ちょっと目の前が真っ暗になってきました…。
- 488 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:49:15 ]
- privateな構造がしゃしゃり出てくるクラス設計が間違い
最初からpublicに分類すべき それで問題が出るなら普通の人なら根本から作り直すね
- 489 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:54:31 ]
- すみません、現段階ではちょっと理解できないのですが、文献を漁ってなんとかしてみます。
貴重なアドバイスありがとうございます。
- 490 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:55:12 ]
- >>485
const なポインタ or 参照を返せば、他から変更はできないけど、 他の部分がそのオブジェクトの構造に依存することになるね
- 491 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:08:44 ]
- アクセス制御がなんのためにあるのかという根本が分かってないように見える
- 492 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:49:43 ]
- >>485
まあ要するに、 クラスのクライアント(使う人)が privateなメンバ変数(およびprivateメンバ関数) については何も知らなくても publicなメンバ関数を見るだけで 使えるように設計すべき ということだよ。 これはすなわち、public/protectedなメンバ関数以外が変わっても クライアントが書いたコードには影響がないということ。 ちなみにpublicなメンバ変数なんて大抵はクソ設計の証。
- 493 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:06:47 ]
- 485じゃないけど
>>492 それは基本的にはカプセル化に重点を置いてコードを書いた方が良い、ということで良いんでしょうか?
- 494 名前:492 mailto:sage [2009/05/26(火) 20:41:33 ]
- >>493
そう。基本的にはね。 オブジェクト指向プログラミング (OOP; object-oriented programming) においてカプセル化はとーーっても大事。 たまにいっそ全部publicにということで構造体structを使うことがあるけど 基本的にはそういうこと。
- 495 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:29:31 ]
- なんとなく分かってきました、ありがとうございます
- 496 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:44:30 ]
- まあ現実的にはpublic変数だの参照返しも使うことはあるけどね
- 497 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:47:56 ]
- ねえよ
- 498 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:52:34 ]
- 無意味な隠ぺい無意味な複スレッドは考える力が足りない人が一度はハマる道程だからね
- 499 名前:492 mailto:sage [2009/05/26(火) 21:54:08 ]
- 現実にはそういう場合もあるかもしれないけど、
「良いクラス設計」の話に限った場合、フツーはない。 「全部publicにということで構造体struct」 は返り値に複数の情報を持たせたい時とかにありえる。 ただ複数の型を束ねただけ。
- 500 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:57:34 ]
- GetとSetがズラリと並んだクラスは結構見るな
- 501 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:00:53 ]
- ねえよ
- 502 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:04:41 ]
- >>500
学生の頃作ったプログラム見直してみるとGetとSet多用しててえらいことになってた 今でもうまい設計はできないけど、他で使うならpublicでいいよねって話だよな
- 503 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:46:22 ]
- Effective C++には最悪でもget()とset()用意しろって書いてあるよ^^
structでメンバ変数をpublicにするのは >>499の言うとおり、値を束ねただけのものとして、 構造体を値として扱う場合にだけ許される。 Effective C++やC++ Coding Standards、Google Coding Standardsなんかを ひとつも読んでいない人間はC++触らないでください
- 504 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 00:14:57 ]
- >>503センセー俺1つも読んだことないんですけどー
- 505 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 00:21:02 ]
- 読むだけなら馬鹿でもできるから気にする必要無い
- 506 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 00:43:52 ]
- class A{
int a; public: int get(){return a;} void set(int i){a = i;} }; こういうのはさすがにpublic派のほうが多い気がする
- 507 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 00:53:05 ]
- 宗教になぞらえられたりする理由なんだろうけど本人が気付くまで周りが何を言っても無駄なんだよね
距離を置いて厄災に巻き込まれないようにするだけ
- 508 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:15:12 ]
- >>506 が「何を」 public にするのかは知らないけど、
もし int a を public にする気なら、豆腐の角に頭をぶつけて死ねといいたい
- 509 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:27:16 ]
- メンバ変数をpublicに置くような人間は抽象化には興味ないんだろうな。
C++使う理由がないよ。多分。
- 510 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:33:51 ]
- aがクラスや配列やポインタなら全くもってその通りだがintだぜ?
こんなプリミティブなメンバまで変更しなきゃならない時にはどうせインターフェースも変更入るよ そこまでいちいちgetset噛ませと言い出すとちょっと原理主義すぎて現実的でない
- 511 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:49:08 ]
- こういうとき、プロパティのある言語がうらやましいと思う。
- 512 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:50:40 ]
- もしgetterやsetterで参照する対象が巨大な配列やクラスだったら
重いコピーが発生する事を覚悟しなければならない つまり巨大な配列やクラスはgetterやsetterの対象にはならない
- 513 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:55:01 ]
- >>510
返すのがintだからどうだって話じゃないだろ。たとえば class A{ int a,b,c,d,e,f,g,h,i,j,k,l,m,n; 以下略 }; こんなのの実装をimplイディオムに変えたいと思ったときどうすんだよって話。
- 514 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:55:07 ]
- どこの世界も原理主義には付き合ってられない
- 515 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:00:14 ]
- getとsetをpublicで公開するということは、
「いつでも誰でも見ていいし好き勝手に変えてもいい『何か』を持ってますよ」ということを 外部に向けて大っぴらに公開しているということです したがって、そのセマンティクスを変更するのはインターフェースの変更なんだから getとsetを使っている全ての箇所に影響が出てしまいます これってよく見ると『何か』を変数としてpublicで公開した時と状況はまったく変わりませんね publicなgetとsetを両方用意するというのは、同じ事を回りくどく書かせるだけであって 可読性も保守性も一切上がりません intだろうと何だろうと何でもかんでもgetsetというのは罠であり、有害な迷信です public変数のセマンティクスを持つものはpublic変数でいいんです
- 516 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:10:14 ]
- わずかなタイプ数の増加が"現実的"でない理由って何よ?
- 517 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:13:29 ]
- privateに固執するおまえはマダマダ無能と言われてるんだよ。
- 518 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:14:45 ]
- 無意味なget setで行が肥大化するのはプログラムを見づらくするだけ。
原理主義的には、カプセル化した気分に浸れていい
- 519 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:14:47 ]
- 現実には、そのセッタでだた代入するだけなんてことはなくて、
たいてい、ついでにどこかに値の変更を通知したり、 入力値が範囲外なら例外投げるようにしたりしていて、 単純にメンバ変数をpublicにできる場合なんて全然ないと思うんだけど。 そんな場合の話はしていないって?
- 520 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:18:11 ]
- 今回の基準は>>506だろ。ただ代入するだけ。
- 521 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:18:39 ]
- 今話題に上がっているのは、ただのset get。
意味があるのは問題なし。
- 522 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:27:02 ]
- マルチスレッドから操作されるようになったので、
aを防御したくなったらどうするの? aが頻繁に変更されるようになったので、 毎回最新の値をサーバから取得したくなったらどうするの? aに連動してbも変更したくなったらどうするの? 正当な値だけ受け付けるようにしたくなったらどうするの? aが更新されたことをBに通知してあげたくなったらどうするの? 将来行われる変更を全部見通すことができるの?
- 523 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:31:06 ]
- >>519
そういう色んなことをする関数は単純なsetではなく、もっと意味のある名前を付けられるはず なんかの大きさならresizeとか、通知するんだったらnoticeとか その相方はgetとしか言い様がないこともあるだろうけどさ 両方とも本当にget,setとしか名付けようもないようなものは、その意味合いは内部的にも外部的にも ただのpublicメンバ変数だと思うんだけどなぁ >>522 排他制御はともかく、他はgetXXだのsetXXだのという名前を付けるべき操作ではない
- 524 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:36:49 ]
- >>523
何を根拠に。 ちょっとした処理付きのgetXX/setXXなんて普通に使うぞ?
- 525 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:41:39 ]
- お行儀の悪いプログラムってやつだな
- 526 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:46:21 ]
- >>525
アホは黙ってろ
- 527 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:54:33 ]
- もういいからsetしようとしたら強制的に例外投げろよ
- 528 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:59:26 ]
- >>527
それもpublicメンバ変数じゃできないな。 アクセス違反がせいぜい。
- 529 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 03:00:35 ]
- >>524
例えば「正当な値だけ受け付ける」ようにsetXXを変更したとしようか そうなると不当な値が入ってきたらエラーなり例外なりを返すんだろうが、 旧バージョンのsetXXを使ったコードは当然そのエラーに対応する処理をしていないので問題が起こる つまり、この変更はインターフェースの変更であって、全てのsetXXを使用するコードに修正を迫るものであるわけだ 素直にsetXXの呼び出しを全部修正してもいいし、旧setXXとは機能が違う新setXXを(機能に見合った名前で) 新しく別に作って適宜置き換えるのでもいいが、結局はsetXXの呼び出しは全てチェックする必要がある でも、どうせset箇所を全部見直す必要がある変更なんだから 最初からpublic変数で書いて、必要になってからset関数を書いてもまったく同じだろ?
- 530 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 03:05:45 ]
- >>529
確かに、エラーの追加はインターフェースの変更だ。 そこは全面同意。 でも1つしか答えてないぞ。
- 531 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 03:56:00 ]
- > getとsetをpublicで公開するということは、
> 「いつでも誰でも見ていいし好き勝手に変えてもいい『何か』を持ってますよ」ということを > 外部に向けて大っぴらに公開しているということです この認識は間違い。 getとsetをpublicで公開するということは誰でも自由に行ってもいいのはただセッタゲッタの呼び出しだけで その結果は呼び出し側の都合ではなくクラスの都合で決定されます。 クラスの都合を無視してクラスの状態の参照や変更を行うことはできませんということをいっている。 > 例えば「正当な値だけ受け付ける」ようにsetXXを変更したとしようか > そうなると不当な値が入ってきたらエラーなり例外なりを返すんだろうが、 > 旧バージョンのsetXXを使ったコードは当然そのエラーに対応する処理をしていないので問題が起こる こうした場合は実装の変更ではなく仕様の変更なのでセッタゲッタによるカプセル化(=実装の隠蔽)のメリットとは無関係。
- 532 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 04:06:47 ]
- 個人的には自由変数を1個インターフェースとして公開するごとに
そのクラスの内部設計の自由度が減るのがいやだな あとは>>519と同じ意見でただ代入するってのはあまりない たいていマルチスレッド用の排他処理がくっついたりする
- 533 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 08:09:58 ]
- メソッドとメンバしかないC++が全て悪い。
object.set_value2( object.get_value0()->get_value1() ); こう書くより、 object.value2 = object.value0->value1; こう書いた方が、見やすいものなぁ。
- 534 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 08:13:32 ]
- >>533
operator =で見やすいほうの書き方にできるのでは?
- 535 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 08:34:48 ]
- >>533
10年前に作られた言語だからな… >>534 できなくもないけど結構面倒だよ
- 536 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 08:51:13 ]
- C++知らない俺が言うのもなんだけど、set/getなんていう
低レベルのインタフェース作るのが間違ってるんだよ。 もっと抽象化された機能のメソッドを作るべき
- 537 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 09:24:08 ]
- >>535
>10年前に作られた言語 wikipediaによると標準化からは10年だが、C++2.0から20年、前身のC with Classesから30年のようだ D&Eなんかで示された考え方も今では古くなりつつあるのかと思うと少し寂しくなる
- 538 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 09:28:03 ]
- 何でさっき知ったばかりなのに寂しがってんだよw
- 539 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 10:04:33 ]
- >>536
get/set全てが低レベルなインターフェースとも限らないけどね 2,3行目は俺も同じ意見だ
- 540 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 12:02:18 ]
- 結局、変数をpublicに置くような連中に何を言っても無駄ということが証明された様子。
>>515に対する反論はEffective C++にずばり書かれてる。 ちなみに、Effective C++の著者であるメイヤーは別の書物、 Effective STLの中でそういう連中とは距離を取れと書いている。 まさに>>507の予言どおりだ。
- 541 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 12:26:20 ]
- ところで、メンバ変数をpublicにおく場合ももちろんある。
議論の冒頭、>>499はちゃんとそういう例外事項があることを認めている。 C++ Coding Standardsの第41項でも例外事項を設けているし、 setとgetの功罪(設計の過ち)についても言及している。 だから、「原理主義」でくくるのは議論の前提を無視している。
- 542 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 12:36:27 ]
- C++ Coding StandardsはC++関係の本の中でも厚さが特に薄い本だが
内容は濃いな
- 543 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 12:54:51 ]
- wikipediaのメソッドの記事にアクセサ論争って項目があるんだな
やっぱ昔から争ってる内容なのか
- 544 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 13:34:11 ]
- boost::arrayはpublicにメンバ変数を置いてるけどなぁ・・・。
これもだめなのか?
- 545 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:18:29 ]
- 安全性を重視するか、高速性を重視するかは、設計者に委ねられてる
どっちが正解とかいうものではない
- 546 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:31:38 ]
- ときどき「高速化するため」といって安全性をスポイルすることを正当化する人間が出てくるが
そういう人間もCoding Standardsを読むべきだな。 高速化が正当化されるには「時期」があることが説明されている。 アジャイルプラクティスとかもあわせて読んでおきたい。
- 547 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:59:17 ]
- 性的な意味で
- 548 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 18:00:17 ]
- >>544
PODにするためだから仕方ない
- 549 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 22:36:05 ]
- >>545
だから詳しく知らないなら断言するなよ。 getter/setterの速度がどうとか言ってる奴は 議論に参加する資格すらないから。
|

|