- 1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/
- 666 名前:657 mailto:sage [2009/08/30(日) 19:18:44 ]
- >>661
すみません、ちょっと複雑ですw >>662 あ、はい、staticです・・・(?)
- 667 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 19:31:56 ]
- >>663
class Hoge { int x;//位置X int y;//位置Y int x0://向きx int y0;//向きy public: void Hoge() :x(0),y(0) ,x0(1),y0(0) //初期値は右向き { } void forward()//進む { x+=x0;y+=y0; } void right()//右に回転 { int atmp=x0; x0=y0; y0=-atmp; } void left()//左回転 { int atmp=x0; x0=-y0; y0=atmp; } };
- 668 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:07:05 ]
- Stateパターンの方がよくね?
- 669 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:35:57 ]
- C#のインデクサと同じことをC++でやるテクニックってありますかね?
- 670 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:39:01 ]
- operator[]
- 671 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:56:30 ]
- >>666
ソースを貼れないなら自分で調べるしかない。 該当箇所にブレークポイントを打ってF5。止まったところでALT+8して逆アセンブルを比較する。 処理速度が気になるときは逆アセンブルを見るのが近道
- 672 名前:663 mailto:sage [2009/08/30(日) 22:25:34 ]
- >>664
すいません、ダメでした >>663の前方に2、左に1のy座標を求めるために計算してみました (120*π/180)でラジアンをだし、それを半径の長さ(1^2+2^2=5 ピタゴラスの定理でsqrt(5)) のsqrt(5)で割ってsinを出してみたところうまくいきません。どこが問題なのでしょうか? ↓のコードの結果は0.805573になります #include <iostream> #include <math.h> #define PI 3.14159 using namespace std; int main() { double deg = 120; double rad = (deg * PI / 180.0)/sqrt(5.0); cout <<sin(rad) ; return 0; } >>667 ありがとうございます アクションRPGに導入するとものすごいコードが短縮できました! が、マスメ状ではうまく動きませんでした・・
- 673 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 22:56:24 ]
- >>672
高校から数学をやり直せ 中学かもしれん
- 674 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:00:36 ]
- sin()じゃどうあがいても1を超える事はないだろww
- 675 名前:663 mailto:sage [2009/08/30(日) 23:12:24 ]
- すいません、三角関数は当時理解してたつもりでしたがいざ使うとなるとロクに使えませでした
おとなしくifで分岐させつつやります ありがとうございました。
- 676 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:14:34 ]
- >>675
いやまてまて、 三角関数とか忘れるものじゃないだろ。 数学の基礎中の基礎だぞ? 15歳のガキでも(理解しているかどうかは別として)一応ならうんだぞ??
- 677 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:20:33 ]
- いや公式も覚えてるんですよむしろ忘れるはずも無い
半径が1で 筆記体のsin・cos・tanの頭文字を使って 始点が分母終点が分子 ttp://www1.axfc.net/uploader/Img/so/57580.jpg この覚え方で忘れるはずも無いでしょう ただこれを応用する力がなくなった、のか最初から無かったのか 前者だったはずなんだけどなぁ
- 678 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:26:51 ]
- 90度ずつしか回転しないうちはif文でいいけど
将来3DCGを使っていろんな方向に微妙に角度を変えるときは必須だよ^^
- 679 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:28:02 ]
- >>677
>>672の問題点は、120degがどこから来たかだ。
- 680 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 00:00:17 ]
- こんな感じじゃよ。たぶん。これで、いかなる角度への移動も可能。
codepad.org/QASgM33C
- 681 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 00:08:20 ]
- ああなんだ回転行列か
- 682 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 00:13:25 ]
- >>680
お前何でそんなに優しいんだ! 惚れるぜ
- 683 名前:657 mailto:sage [2009/08/31(月) 01:48:19 ]
- >>671
分かりました。 ありがとうございます!
- 684 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 01:51:57 ]
- 回天行列です。
- 685 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 10:07:38 ]
- そんな行列いやだー
- 686 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:01:07 ]
- 10年ぐらい前に売られていたバージョンのC言語って今のプログラム組むのに使える?
対応できてるものかい?
- 687 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:15:08 ]
- C言語は10年前と何も変わってないよ
- 688 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:29:43 ]
- >>687
分かりました。 では、10年前のVisual C++で色々プログラム組んでみます。 ありがとうございます。
- 689 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:39:22 ]
- C言語とVisual C++が同じものだと思ってるのか? めでたいやつ
- 690 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:49:23 ]
- >>689
なんだ? 10年前のVisual C++と今の環境は同じじゃないのか?
- 691 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:58:03 ]
- こりゃまた、ずれたレスがきたな。日本語でOK な文だが。
まともに翻訳すると。 10年前の 「Visual C++」 と 「今の環境」 は同じか? 対象が違いすぎて俺には答えられないぜw
- 692 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:06:31 ]
- >>691
答えられないなら書くなよ。 日本語で丁寧に書くと 10年前のVisual C++の環境や扱い方と今のVisual C++の環境や扱い方は、同じじゃないのか? だ。
- 693 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:10:41 ]
- ちがう
- 694 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:12:04 ]
- >>692
お前な、自分が間違ってる上に開き直ってえらそうだな、おいw
- 695 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:17:13 ]
- やっぱりソフトの購入からか。
>>694、どこが間違ってたんだ?
- 696 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:18:03 ]
- Cというプログラミング言語自体はそんなに変っちゃいないが、
Visual C++というMS製のアプリケーションは大幅に変わっている
- 697 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:23:10 ]
- >>696
アプリケーションがかなり変わってるのか、じゃソフトの買い替えからしないとダメだな。 サンクス。
- 698 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:24:52 ]
- 10年前のVC++で作っても今の環境で動くよ、問題ない
しかし最新のVC++は無料版もあるからそっちのがいいと思うんだ
- 699 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:28:51 ]
- >>698
無料版のVisual C++なんてあるのか。 相当変わってるんだな。 試してみる。 色々ありがとう。
- 700 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:34:46 ]
- 何にも知らないで何も調べないでプログラムを組むとか早速高いソフトを買うとか
絶対釣りだろ
- 701 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:42:14 ]
- >>700
10年前にC言語でプログラム組んだことあるし、その当時のプログラムの本は今でもあるよ。 しばらくの間お蔵入りになっててC言語の内容少し忘れてはいるけど。
- 702 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:47:08 ]
- 10年前のOSで開発するなら、10年前の処理系が最適かも。
- 703 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:53:20 ]
- >>702
当時のバージョンのソフトがあるから今のPCにインストールして使ってみる。 あと、無料版も試してみる。
- 704 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:54:53 ]
- DLLでnewする場合はDLLでdeleteしないといけないらしいんですが
DLLでfactoryをnewしてそのインスタンスからcreateする場合もやっぱりDLLでdeleteしないとだめですか?
- 705 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:15:39 ]
- DLLとアプリケーションで、メモリ源が2つあると考えろ。
そして、その2つは扱い方は同じだが、返すべきところが違う。 DLL内のoperator deleteとアプリケーションのoperator delete、 どちらを呼び出して返却すべきかは、自分で考えろ。
- 706 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:47:44 ]
- メモリはもらったところへ返す
DLL側のnewでもらったメモリはDLL側のdeleteへ返す EXE側のnewでもらったメモリはEXE側のdeleteへ返す DLLもEXEもみんな別々にメモリ管理してる (場合がある) から ごっちゃにするとメモリ管理が混乱して落ちる (かもしれない) それはウチで管理してるメモリじゃないぜ、とかそんな感じ EXEもDLLもみんな、使うメモリはどっか一個所で一元管理してやれば済む話なんだが みんな自分勝手だからな
- 707 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:26:35 ]
- boost::shared_ptrを使うとカスタムデリータが確保した側のdeleteで自動的に開放してくれるから便利。
- 708 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:01:23 ]
- shared_ptrの類を使うとインスタンス管理で負けた気がする。
全くの個人的な了見で、使う人を批判する気は全くないが。
- 709 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:13:01 ]
- >>708
そんなこと言っていると 本当にインスタンス管理に(つーか他人の技術に)負けるぞ。 何事も新しいことは受け入れづらいものなのは分かるが。
- 710 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:16:38 ]
- shared_ptrを普通のポインタみたいに記号ひとつで使えればいいのに。Foo@ foo;とか
typedef std::tr1::shared_ptr< foo > sp_foo_t;とかするのめんどくさい
- 711 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:27:12 ]
- >>708安心しろ。それは杞憂だ。
shared_ptrを使うには循環参照を避けるクラス設計が必要になる。 それこそがインスタンス管理の勝利ではないか。 一度使い始めると雪崩的に使うようになるから。
- 712 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:29:52 ]
- >>710
そういうことはC++0xの設計段階で提唱するべきだったな。
- 713 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 22:49:07 ]
- >>710
using std::tr1::shared_ptr とすれば楽になる。 C++0xにはtemplate typedefができるらしいから sp<T>にでもtypedefすればいいんじゃないか
- 714 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 22:59:08 ]
- using sp = std::tr1::shared_ptr;
sp<hoge> sp_hoge; 0xだと↑みたいにできるらしいね。typedefより見やすいし良いと思う
- 715 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 14:25:43 ]
- inline int func(int x){
return x * x; } みたいなinline関数があるとすると、 a = func((int)(b - c)); は a = ((int)(b - c)) * ((int)(b - c)); みたいになるんですか? それとも、 int x = (int)(b - c); a = x * x; みたいになるんですか?
- 716 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 14:40:29 ]
- 後者
マクロ展開と違って引数は1度しか評価されない
- 717 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 15:07:27 ]
- >>716
ありがとうございます。
- 718 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:58:52 ]
- >>713
彼はそんな程度は知っているだろ、たぶん。 彼が言いたいのはもうもっと言語仕様に 組み込んじゃえよってことじゃねぇか?
- 719 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:01:01 ]
- >>717
>>716の言う通り、一度である。 よって、例えばmaxテンプレートとmaxマクロでは max( ++a, b ); がどうなるかが変わってくる。
- 720 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:24:52 ]
- >>719
715です。 これは確かにどちらなのかによって全然違いますね。
- 721 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:37:59 ]
- >>720
というかマクロで作ったら未定義の動作だろ。 *未定義の動作=インターネットのニュースグループ、comp.std.cやcomp.lang.cでは、未定義のコードを実行した結果「鼻から悪魔が飛び出しても仕様に反しない」というjoke が流行したことがありました。今でもたまにこのような表現を見ることがあります。 初級C言語Q&A(7) ttp://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
- 722 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 00:36:29 ]
- 数字を四捨五入するにはどうすればいいんでしょうか?
- 723 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 00:38:06 ]
- JIS, ISO式四捨五入なら専用の関数がいる
- 724 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 00:40:44 ]
- 四捨五入の意味を辞書で調べて、その通りにすればいいと思います
- 725 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 00:51:54 ]
- CをまともにやらずにC++をやろうとするのは無謀?
それなりに努力はするつもりなんだが、どうなんですか?
- 726 名前:デフォルトの名無しさん [2009/09/02(水) 01:13:18 ]
- 別にいいと思うよ。
Cでポインタを理解しておけば、C++でポインタを勉強する必要がなくなるとかそんな程度だし。
- 727 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 01:14:01 ]
- 先にC++に慣れ切ってしまうと、後からではCではプログラムを組めなくなるんじゃないかという危惧がある
ゆとり教育とかいうと聞こえが悪いけど、なんかそんな感じ でもいまどきC++が使えない環境ってのもそうそうないだろうとも思うわけで、 まぁ別にいいんじゃないか 無謀というほどのことはない むしろSTLとか便利なライブラリのおかげでポインタをやたら使わずに済む分つまづくポイントは減ってるかもしんない
- 728 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 01:30:28 ]
- >>726 >>727
返答ありがとうございます
- 729 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 02:15:29 ]
- >>725
いやいきなりC++をやる事をオススメする 禿もそう言っているし
- 730 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 06:50:19 ]
- >>725
> それなりに努力はするつもりなんだが この覚悟があるならC++で良いと思うよ。
- 731 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 06:55:07 ]
- Accelerated C++やC++プライマーを使うと良いでしょう。
- 732 名前:デフォルトの名無しさん [2009/09/02(水) 12:33:11 ]
- ビジュアルCとビジュアルCじゃないCはどの程度の違いがありますか?
- 733 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 13:04:47 ]
- 「ビジュアルCじゃないC」 とかじゃなくて具体的な製品名をあげてくれ
- 734 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 13:35:26 ]
- try catchで配列[]の添え字範囲外の例外をキャッチ出来る?
メモリのアクセス違反のキャッチと言うべきかな
- 735 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 13:42:33 ]
- >>734
これ? msdn.microsoft.com/ja-jp/library/5z4bw5h5(VS.80).aspx
- 736 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 13:50:10 ]
- >>735
それっぽいけど エラーの種類の判別方法がわからんね 調べてみます
- 737 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 14:16:12 ]
- >>733
ずびばせん…… 例えばボーランド?というやつではどういう違いがありますか?
- 738 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 15:14:59 ]
- Borland C++Builder と Borland C++Compiler の2種類があるけど・・・
Borland C++Builder と Visual C++ はまったく異なる。 Borland C++Builder は Visual Basic みたいに部品ポトペタで開発していくスタイル。 Visual C++ はエディタでごりごりコードを書く開発スタイル。 Borland C++Compiler と Visual C++ はごりごりコードを書く点では変わらないけれど、 Borland C++Compiler には開発環境が付いておらず、 普通のテキストエディタ(メモ帳とか)でコードを書き、コマンドラインからコンパイラを使うことになる。 (いちおうベクターあたりを探せばフリーの開発環境がいくつか見つかる) Visual C++ には豪華な開発環境が付いていて、ボタン一発でコンパイルでき、デバッガも組み込まれている。 ちなみにボーランド(の開発製品群)はエンバカデロに買収されました。 なので、たぶん Embacadero C++Builder とか呼ぶべき。
- 739 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 15:18:25 ]
- >>738
で、そのコードはCなの?
- 740 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 15:22:47 ]
- そもそも Visual C というのは無いから
Visual C++ のことだろうと推測した (C#のことだったらすまんね) 説明したのは書いてるとおり Visual C++ とボーランドなんとかというやつの比較
- 741 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 17:07:20 ]
- ははあ……なるほど
Cプラが使えるのには違いはないんですね!? ありがとうございました!
- 742 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 21:45:07 ]
- hoge f(int a, int b, int c)
{ return hoge(a, b, c); } hoge h(f(1, 2, 3)); これだとコピーコンストラクタが無視されて、あたかも hoge h(1, 2, 3); のような挙動になるのは仕様で決められてる? それともたまたまコンパイラの中の人が親切だっただけで?
- 743 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 21:57:59 ]
- >>742 仕様で許可されている。返り血最適化RVOという。
許可されているだけなので最適化されるかどうかは中の人次第。
- 744 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:08:24 ]
- 下記の書についてです。
(1).ANSI C/C++辞典(ttp://www.amazon.co.jp/exec/obidos/ASIN/4320027973/) (2).新ANSI C言語辞典(ttp://www.amazon.co.jp/exec/obidos/ASIN/4774104329/) CだけでなくC++についても調べたいので(1)は買う予定でいます。 (2)は色々と評判に上がることが多いようなので迷ってるのですが、 ・ (2)は(1)と重複している部分が結構あったりするのでしょうか。 ・ (2)ではC++についてはまったく触れられていないのでしょうか。 ・ 両方とも割と昔の本ですが、仕様の変更などで現在と異なる点はあるのでしょうか。 ご存知の方がいましたら教えていただきたいです。
- 745 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:29:39 ]
- C++は1998と2003年に改正されてるけど1996年の本でいいの?
いいんだ。あ、そう。
- 746 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:54:35 ]
- 新のつかないほうのANSI C言語辞典を持っているけど、これは今でも使える。
まあ古い本なので、ワイド文字関係と誰も使っていないC99に関する事柄が抜け落ちているけど。 だから、新のほうもおそらくおすすめできると自分は思っている。 ANSI C/C++辞典は分からない。初版は図書館で見たことあるけど、これ3版だからノーコメント。 個人的には、C++の内容を辞典的に網羅するにはページ数が少なすぎるだろうというのが気掛かり。 そのアマゾンによれば590ページらしいが、C言語辞典ですら500ページ近くある。 (初版でもC言語辞典より小さな字で詰めて配置してあったとはいえ)
- 747 名前:744 mailto:sage [2009/09/03(木) 00:22:24 ]
- 情報ありがとうございます
最近の本も探してみたのですが、評価が芳しくないものやパッとしないものが多くて… 古い本なので逆に図書館にあるかも知れませんね 近所の図書館をあたってみて、もしあれば中身を確認してみようと思います
- 748 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 02:00:47 ]
- 今まで文字列の取り扱いは char * を使ってたのですが、そろそろ汎用性を考えたコードも
意識して書かないといけないかなとか思い始めてます。 ところがなんか TCHAR だの wchar_t だの LPTCSTR だのと色々とあって、どういう時に どれを使えばいいというのが判りません どういう考えで、どういう型を使うのが一般的なのでしょうか
- 749 名前:デフォルトの名無しさん [2009/09/03(木) 02:38:19 ]
- char*でおk。
- 750 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 02:47:38 ]
- 蒸し返すようだけどGET_SET_ACCESSORって要するに
「今は何もしない素通し処理にしておくけど、将来的に別の処理が入った時に クライアントコードの書き換えが必要になるとまずいからとりあえずアクセサ になってますよ」って意味じゃね? 必要になったら普通に書き直せばいいし、何もしてないです、ってのが一目で 分かるし、悪くないマクロだと思うが。 まぁ俺はマクロ嫌いだから極力使わないんで、これも使わないけど。
- 751 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 04:09:28 ]
- ・いつか処理が変わるかもしれないからアクセサは常に作るべき
・次のフェーズで変更されることが分かっているからアクセサを作るべき ・必要になってから作るべき という感じで意見がいつも割れるんだよ
- 752 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 04:24:39 ]
- ハイ!先生
「メンバは原則 public しといてゲッタセッタ必要になったら private に異動で十分」派です。
- 753 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 05:40:12 ]
- それ呼び出し側のコードが変わるじゃん
- 754 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 05:51:34 ]
- で?
- 755 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 05:54:39 ]
- >>752
それだとメンバ変数名を変えたくなっても変えられないな。 Get/Setでポリモーフィズムが使えないな。 >>750 単純な代入とかだったらGET_SET_ACCESSORでいいと思うし、 頑なに拒否する人を見て何が悪いのかと思ってたけど、 デバッガで見れないって言うのがね、ちょっと嫌かな。
- 756 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 06:26:37 ]
- そうやってアクセサとメンバ名の乖離が起こるわけですね。
ポリモーフィズムが使えないという点は全く理解できないので追加説明をしていただけると助かります。
- 757 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 06:46:09 ]
- >>753
変わって何か問題ある?
- 758 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 07:12:09 ]
- 別に問題ないよ
- 759 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 10:22:49 ]
- 書き換えるのが面倒
プロジェクト内の全ファイルから問題の箇所を一発で全部置換できるエディタを持ってるのなら気にする必要はない
- 760 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 12:47:14 ]
- wrproperty使ったほうがクライアントがすっきりうんこ
- 761 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 15:06:03 ]
- 汎用的なライブラリでそんな作業しようと思うとぞっとする。
変数書き換えのタイミングも追いづらいし。
- 762 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 15:10:09 ]
- a* [2]
a[0] = new b[2] これって可能?アクセス方法ってどうやるの?
- 763 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 15:31:20 ]
- 不可能
- 764 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 17:50:35 ]
- プラスとマイナスをひっくりかえす関数ってありますか?
例えば5なら-5に、-9なら9に変えてくれる関数です
- 765 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 17:55:16 ]
- 関数にするまでもない
a = -b; とかで十分
- 766 名前:764 mailto:sage [2009/09/03(木) 18:00:34 ]
- 本当だ、できました
ご親切にありがとうございました
|

|