トップページ⇒tech
1001コメント322KB

C++相談室 part45

■ このスレッドは過去ログ倉庫に格納されています
0001(*^ー゚)b グッジョブ!!2005/11/26(土) 21:20:04
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いします。
IDE(VC++など)などの使い方の質問もその開発環境のスレに
お願いします。

前スレ
http://pc8.2ch.net/test/read.cgi/tech/1128512737/
0685デフォルトの名無しさん2005/12/30(金) 10:19:26
>>683
MyClass x,y,z;
...
z=x+y;
などと書けるようにするためでは?
0686デフォルトの名無しさん2005/12/30(金) 10:34:50
>>683
参照がないと値渡し以外で使うときにoperatorが使いにくい罠ってこったな。

Hoge hage(Hoge *p)
{
  Hoge kami(0);
  Hoge fusa;
  fusa = p->operator *(kami) ;  //これ以外呼びようがない!
  return fusa;
}

これはつらいっしょ。
0687デフォルトの名無しさん2005/12/30(金) 10:35:43
>>665
bcc32.exeなら__propertyで読み出し専用配列つくれるよ!

                 ハ_ハ  
               ('(゚∀゚∩ つくれるよ!
                ヽ  〈 
                 ヽヽ_)
0688デフォルトの名無しさん2005/12/30(金) 11:07:07
  fusa = *p * kami ;  //これ以外呼びようがないか?
0689デフォルトの名無しさん2005/12/30(金) 11:12:55
>>687
VCにも__declspec(property())があるよ!

                 ハ_ハ  
               ('(゚∀゚∩ あるよ!
                ヽ  〈 
                 ヽヽ_)
0690デフォルトの名無しさん2005/12/30(金) 11:31:12
移植性が必要なときが問題だな
0691デフォルトの名無しさん2005/12/30(金) 11:42:40
ttp://homepage3.nifty.com/catfood/up/src/up0290.txt

こういうことではないかと。
0692デフォルトの名無しさん2005/12/30(金) 11:43:27

  環   立  イ_i_  ┼─
     土見   | イ ヒ  イ 子

                                    /\___/ヽ
    (.`ヽ(`> 、                         /''''''    '''''':::::\
     `'<`ゝr'フ\                 +   |(●),   、(●)、:| +
  ⊂コ二Lフ^´  ノ, /⌒)                   |  ,,,ノ(、_, )ヽ、,, .:::|
  ⊂l二L7_ / -ゝ-')´                +  |   `-=ニ=- ' .::::::| +
       \_  、__,.イ\           +     \   `ニニ´  .:::/    +
        (T__ノ   Tヽ        , -r'⌒! ̄ `":::7ヽ.`- 、   ./|
         ヽ¬.   / ノ`ー-、ヘ<ー1´|  ヽ | :::::::::::::ト、 \ (  ./ヽ
          \l__,./       i l.ヽ! |   .| ::::::::::::::l ヽ   `7ー.、‐'´ |\-、

class Cool
{
public:
 __declspec(property(get=GetX, put=PutX)) int x[];
              :
              :
};
0693デフォルトの名無しさん2005/12/30(金) 11:47:54
あ、変数宣言かぶってしまった。
その部分は脳内修正お願いします。
アク禁うざいOTL
0694デフォルトの名無しさん2005/12/30(金) 12:05:52
  千タ   千十   | 牛
  木タ   木旧  小 ⊥
          ̄
                                    /\___/ヽ
    (.`ヽ(`> 、                         /''''''    '''''':::::\
     `'<`ゝr'フ\                 +   |(●),   、(●)、:| +
  ⊂コ二Lフ^´  ノ, /⌒)                   |  ,,,ノ(、_, )ヽ、,, .:::|
  ⊂l二L7_ / -ゝ-')´                +  |   `-=ニ=- ' .::::::| +
       \_  、__,.イ\           +     \   `ニニ´  .:::/    +
        (T__ノ   Tヽ        , -r'⌒! ̄ `":::7ヽ.`- 、   ./|
         ヽ¬.   / ノ`ー-、ヘ<ー1´|  ヽ | :::::::::::::ト、 \ (  ./ヽ
          \l__,./       i l.ヽ! |   .| ::::::::::::::l ヽ   `7ー.、‐'´ |\-、

class Cool
{
public:
#ifdef __MICROSOFT_C__
 __declspec(property(get=GetX, put=PutX)) int x[];
#endif
#ifdef __BORLAND_C__
 __property int x[int] = { read=GetX, write=PutX };
#endif
              :
              :
};
0695デフォルトの名無しさん2005/12/30(金) 13:46:31
論理的な定数性について、説明して欲しいです。
ぐぐってもヒットしません。
06966812005/12/30(金) 14:44:17
あ、ゴメン。
「参照渡しがデフォってスタイルでなんかいいことひとつでもあんの?」
の間違い。orz
0697デフォルトの名無しさん2005/12/30(金) 14:50:49
もう、コンスト参照がディフォルトってことでいいよ。
0698デフォルトの名無しさん2005/12/30(金) 15:13:01
>>695
「ビットの定数性」に対する語としての論理的定数性のこと?
0699デフォルトの名無しさん2005/12/30(金) 15:23:43
>>696
蒸し返して悪いけど、そうじゃないかと思ったのだが、それだと
後半の値渡しを批判しているっぽいくだり『コピコンを呼ぶのは
パフォーマンス的に全くの無駄だし』と矛盾しない?
0700デフォルトの名無しさん2005/12/30(金) 15:26:57
標準で定められている例外は次の通りです。
exception から直接派生しているもの
bad_alloc, bad_cast, bad_exception, bad_typeid,
ios_base::failure, logic_error, runtime_error

logic_error から派生しているもの
domain_error, invalid_argument, length_error, out_of_range

runtime_error から派生しているもの
overflow_error, underflow_error, range_error

例えばメモリアロケーションに失敗したり、
その他浮動小数点演算で数値として表すことができない結果が出たり、
といろいろと例外処理したいシチュエーションがありますが、
そういう例外クラスの事実上の標準なクラスライブラリってあります?
0701デフォルトの名無しさん2005/12/30(金) 16:08:47
処理系依存です
処理系依存です
処理系依存です
処理系依存です
処理系依存です
07027002005/12/30(金) 17:03:49
そうですか、その辺は処理系依存ですか。
ISO規格に含まれている >>700 の例外だけは
ポータブルってことですね。
0703デフォルトの名無しさん2005/12/30(金) 17:27:45
>>700
メモリアロケーションの失敗は bad_alloc でいいんじゃないの?
07047002005/12/30(金) 17:31:12
>>703 いわれてみれば or2
0705デフォルトの名無しさん2005/12/30(金) 19:47:26
>>684
Generic なアルゴリズム書くのが激しく面倒になるが。
0706デフォルトの名無しさん2005/12/30(金) 19:48:53
>>705
テンプレートなら特殊化があるね
0707デフォルトの名無しさん2005/12/30(金) 20:10:12
>>699
それは >>680 の言うコピコンの使い方(値を変えられると困る場面で、const の代わりに引数を変更
されてもいいようにコピーを渡す)を受けての話。
0708デフォルトの名無しさん2005/12/30(金) 21:47:48
ClassA a;

if( ClassA b = a )
 b.func();

今気付いたんだけど、ifの条件式でこんなことできるんだね。
知らなかった。
0709デフォルトの名無しさん2005/12/30(金) 21:52:18
bool に変換できる型である必要があるけど
0710デフォルトの名無しさん2005/12/30(金) 21:54:34
条件式と見間違えやすいからけっこう危険だよ。
dynamic_cast用にしといた方が無難だと思う。
0711デフォルトの名無しさん2005/12/30(金) 21:55:41
条件式の中で代入を使うのは、間違いって教わった人は
気づかないかもしれないね
0712デフォルトの名無しさん2005/12/30(金) 22:00:33
ぼけらんどの功罪
0713デフォルトの名無しさん2005/12/30(金) 22:03:11
>>708
たしか、while でもできるよ。
0714デフォルトの名無しさん2005/12/30(金) 22:06:45
for でもできるっしょ
条件式を持っているなら、どれでもできるような気が・・・
0715デフォルトの名無しさん2005/12/30(金) 22:07:29
if( int i=0, j=1) { }
は合法?
0716デフォルトの名無しさん2005/12/30(金) 22:08:39
>>714
do whileじゃ無理っす
まぁ、正直出来ても活用性0ですけどw
0717デフォルトの名無しさん2005/12/30(金) 22:09:25
switchも可能だったはず。
0718デフォルトの名無しさん2005/12/30(金) 22:10:31
昔のCの本に1["string"]とか書けるっていう記述があったな。
さすがにC++じゃ無理だろうが
0719デフォルトの名無しさん2005/12/30(金) 22:14:14
>>718
a[b] は*(a+b)と同じ意味なので
1["STR"] = *(1 + "STR") = *("STR" + 1) = "STR"[1]
という事やね。
C++でも出来た気がする。
0720デフォルトの名無しさん2005/12/30(金) 22:14:32
なんでfor(int i, int j; 1; ++i, --j);
のように、変数導入宣言が二回以上使うことができないのだろうか?
C#ではできるのかな?
0721デフォルトの名無しさん2005/12/30(金) 22:22:34
for( int i=0, j=1;;)
0722デフォルトの名無しさん2005/12/30(金) 22:24:34
局所的に制御変数を二つ導入したいことは結構あるのに...
0723デフォルトの名無しさん2005/12/30(金) 22:25:51
沢山条件がある場合は
構造体にパックしたりすればいいんでない?
またはcharとか1byte変数配列を必要な数だけ宣言して、型キャストするとか
0724デフォルトの名無しさん2005/12/30(金) 22:26:01
っていうか、for(;1;)なら制御もクソもないかw
0725デフォルトの名無しさん2005/12/30(金) 22:35:16
二項演算子 [] は可換
0726デフォルトの名無しさん2005/12/30(金) 22:37:44
std::vector<int> v;
FOREACH( v, int i){ printf("%d",i); }
みたいなことのできるマクロ書いてた頃(素直にboost使う気になれなかった頃)
for(int i=0, v::iterator it=v.begin;
と実装できなくて困った覚えがあるなぁ
0727デフォルトの名無しさん2005/12/30(金) 22:38:04
operator[]()
0728デフォルトの名無しさん2005/12/31(土) 05:11:09
template <class Type> class A{
public:
Type &func1(){return data1;}
Type data1;
};

template <class Type> class B : public A<Type>{
public:
void func2(){
data2 = A<Type>::func1();
//data2 = func1();
}
Type data2;
};

gccで上記はコンパイルできますが、//でコメントアウトしている書き方では
エラーがでてしまいます。
この例ではなぜベースクラスまで指定しないといけないんでしょうか?
0729デフォルトの名無しさん2005/12/31(土) 08:06:11
>>728
テンプレートは、引数が与えられていない定義そのものと、引数を与えられた時点の
2回構文がチェックされる。

クラス・テンプレートのメンバは、あとで明示的特殊化によって御破算にされる可能性が
あるから、最初のチェックのときには名前検索の対象にならない。だから修飾されていない
"func1"はその定義が見つからず、エラーとなる。

ただし、その名前がテンプレート・パラメータに従属している基底クラスのメンバである
可能性が示されたら、2回目のときまでチェックを遅延することが許されている。
それで A<Type>::func1() はコンパイルを通る。

ちなみに
data2 = this->func1();
と書くことも可能。

ここいらへんは、テンプレートの機能の中でもややこしいところだから、詳しく解説した
本を読んだほうがいい。
C++ Templates とか

0730デフォルトの名無しさん2005/12/31(土) 14:32:52
 ・・・・・・・
>>詳しく解説した
>>本を読んだほうがいい。
>>C++ Templates とか
どの本をさしますか。
ルキーの解説書ですか。
ブーストの取説ですか。
教祖の本では不十分ですか。
0731デフォルトの名無しさん2005/12/31(土) 14:36:57
>>730
>>9
0732デフォルトの名無しさん2005/12/31(土) 15:17:39
ちょっと質問させてください。
C++で中国と戦えるでしょうか?
0733デフォルトの名無しさん2005/12/31(土) 15:19:24
>>732
おまいあきらかにC#スレからきただろ!!!
0734デフォルトの名無しさん2005/12/31(土) 15:33:00
731 名前:デフォルトの名無しさん :2005/12/31(土) 14:36:57
>>730
>>9
ずばり言ってよ。
今の時間読めん
0735デフォルトの名無しさん2005/12/31(土) 15:37:43
なんで読めないのか分からないけど、
C++ Templates: The Complete Guide
http://www.amazon.com/gp/product/0201734842/102-0872632-8435348?n=283155
でいいんじゃない?
0736デフォルトの名無しさん2005/12/31(土) 15:43:05
それで戦えるんですか?答えてください。
0737デフォルトの名無しさん2005/12/31(土) 16:07:04
あと、全裸でお台場を走り回ることが必要不可欠
0738デフォルトの名無しさん2005/12/31(土) 16:08:51
>>C++ Templates: The Complete Guid
規約無視して、変体書式で書いてある事を貴方は
どの様にお考えですか。初めてテンプレ学ぶ人には
変換することが難題だと思いますが。ソースは↓
http://www.josuttis.com/tmplbook/
The only gripe I have against this book is a very very minor one:
the authors for some inexplicable reason decided to write
"T const* p" instead of "const T* p" in function prototypes.
Both are correct and both mean the same thing but nobody uses
the first convention whose major fault is

that it's too close to "T *const p" - a different thing entirely.
Plus the second convention is such an ingrained idiom that fighting
it is pure nonsense which makes the book initially hard to read.
Example: what does "char const* const& a" mean?
(p. 17) On top of that the reader cannot simply substitute one convention for the other,
as the 25,000 C++ books already in print are
still going to *be* there plus the x billion lines of legacy C++ code is
not leaving any decade soon! So one has to keep *both* conventions
in mind in order to read the text. It's really not much of a big deal
but I wonder: what were they thinking?
0739デフォルトの名無しさん2005/12/31(土) 16:15:44
人は、テキストを読むために両方の
コンベンションを覚えておかなければなりません。
本当に、大したことの多くではないのか。
私が不思議に思うのは、 彼らは何を考えてたのか
ボケ?
0740デフォルトの名無しさん2005/12/31(土) 16:42:37
>>730 >>734 >>738-739
何かの病気?
0741デフォルトの名無しさん2005/12/31(土) 16:57:05
>>738 そんな qualifier の置き方がそんなに重要かよ。
main の argv の型だって、
const char * const char * const argv と書くやつもいれば
const を変なところに(意味が変わらない範囲で)くっつける奴もいる
0742デフォルトの名無しさん2005/12/31(土) 17:17:59
>>738
const char* と書く人に文字列リテラルの配列を定義させると、半分以上は
const char* table[] と書く。
char const* を使う人は
char const* const table[] と書く。

Windows や Linux など、すべて RAM 上で動かすプログラミングをしていると、
前者と後者の違いが重要だとは思わないだろう。
しかし ROM 環境で、さらに RAM の少ない環境でプログラミングしていると
これらの違いに神経を使う必要が出てくる。

故に、普段から ROM 環境でプログラムしてる人
または偏執的な const マニアは後者に落ち着く可能性が高い。
0743デフォルトの名無しさん2005/12/31(土) 17:33:46
>>742 偏執的な const マニア(笑
マニアかどうかわかんないが、俺も
const できるところは全部 const にしないと気持ち悪いな。
結構潜在的なバグを発見できたりするし。
const つけまくったからと行ってどの程度最適化に
反映してくれるかはわかんないけど。
0744デフォルトの名無しさん2005/12/31(土) 17:40:09
>>742
ちなみに違いを教えてくれ。
0745デフォルトの名無しさん2005/12/31(土) 17:47:31
>>744
俺もどっちがどっちだか分からなくなった。
まぁ宰相ググレカスだな
07467282005/12/31(土) 17:54:14
解説下さった皆様ありがとうございます。
いままでVC++使いだったけど、>>728みたいなのは
ベースクラス指定無しで通ってたんで、なんかめんどくさい、、、。
ぐぐる先生に聞いたところ、他の複雑なテンプレートの例でも、「VC++ならOK」
というのがあるようですね。
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-template-4.html
LINUX環境で開発することになったので、そのへんのところ
元の言語仕様をよく確認しなきゃいけない。
07477422005/12/31(土) 17:57:36
>>744,745
わかりやすい話だと table[0] = "modified" が、前者だと通り、後者だとエラーになる。

前者では table を書き換え可能な RAM に置く必要があり、後者ではその必要が無い。
起動時に全部 RAM にロードされる環境だと、それらの違いはほとんど無視できる。
( OS による最適化で const な table をプロセス間で共有してくれる可能性はある。)
ROM 環境では必要な分だけ RAM を使うことになるので、
table[] のサイズがそのまま RAM の消費量の差になる。
0748デフォルトの名無しさん2005/12/31(土) 18:02:33
Q1:すべて RAM 上で動かすプログラミングをしていると、
前者と後者の違いが重要だとは思わないだろう
誰のことですか。発言者の出典箇所は?

Q2:普段から ROM 環境でプログラムしてる人
PICとか組み込み系の人のことですか。

Q3:世界中の人の前に広く出回る本であっても貴方は後者の
書き方で問題ないと寛容にお考えですか。
この本は、英語、中国語、アラビア語で翻訳されてます。

関東圏内で会話していると
標準語と関西弁の違いが重要だと思わないだろう。
しかし大阪でさらになんばで会話をしていると
これらの違いに神経を使う必要が出てくる。
私は、東京のど真ん中で偏執的な関西弁マニアが巻くし立てらたら
必ず違和感を持つ。そして、日本の公用語は関西弁に
は絶対にならないと考える。
0749デフォルトの名無しさん2005/12/31(土) 18:02:53
>>742
俺はconst char *派だけど、typedefする。

typedef const char *PCSTR; //大抵<windows.h>で済ます
const PCSTR *table[];
0750デフォルトの名無しさん2005/12/31(土) 18:08:37
でも、const char * と char const * に違いなんてないよね?
てか、const char * って形の宣言ができることがそもそも間違いの始まりなんだよなぁ。
てな、話は↓こっちでやれ・・・
って、「const だけでメシが3杯喰えちゃうスレ」がいつのまにかなくなってる。(´;ω;`)
0751デフォルトの名無しさん2005/12/31(土) 18:31:24
>>750
あー、暫く前に落ちましたよ。
0752デフォルトの名無しさん2005/12/31(土) 18:48:32
bool MakeList(Node*&)
というように、ノードのポインタのアドレスを引数にし、mainから参照したいのですが
うまくいきません。
Node* node;
if(MakeList(&node)){}
このように、条件判断に使いたいのですが・・・・
どうすればいいのですか?
0753デフォルトの名無しさん2005/12/31(土) 18:49:27
>>748
変な奴がいるみたいだが、もうしばらく相手してやる。

> Q1: (引用略)
> 誰のことですか。発言者の出典箇所は?
Windows や Linux をメインの環境としてプログラミングしてる人。
発言者とは誰のことですか。

> Q2:普段から ROM 環境でプログラムしてる人
> PICとか組み込み系の人のことですか。
そこらへんに多いと思う。あと携帯ゲーム機とか。

> Q3:世界中の人の前に広く出回る本であっても貴方は後者の
> 書き方で問題ないと寛容にお考えですか。
普段から後者に統一しているので、問題ないと考える。
C++ の書き方についての話なので、何語に翻訳されてようと変わらない。

> 関東圏内で会話していると(以下略)
大阪で暮らすために日本語を学ぶなら、標準語を学ぶだけでは不十分だろう。
逆に、東京だけで暮らすなら、関西弁を学ぶ必要は無い。
ROM 環境でプログラミングするために C++ を使うなら、以下略。
逆に、潤沢な RAM のある環境だけでプログラミングするなら、以下略。
0754デフォルトの名無しさん2005/12/31(土) 18:54:37
>>752
operator void* () を定義すればどうか。
0755デフォルトの名無しさん2005/12/31(土) 18:56:01
>>754

すいません、詳しく教えてください
0756デフォルトの名無しさん2005/12/31(土) 19:02:42
>>755
streamと同じ要領。変換演算子。"ストリーム c++ 変換演算子"でぐぐれば
いろいろ出てくる。
0757デフォルトの名無しさん2005/12/31(土) 19:03:45
"ストリーム 状態 c++"の方がいいか。
0758デフォルトの名無しさん2005/12/31(土) 19:09:23
>>754
MakeList() の戻り値が bool なのに、なんで変換演算子が要るの?
0759デフォルトの名無しさん2005/12/31(土) 19:12:01
>>752

呼び出しの時に & はいらんよ。
0760デフォルトの名無しさん2005/12/31(土) 20:11:56
>>759

どうもありがとうございます
0761デフォルトの名無しさん2005/12/31(土) 21:05:47
あれ? なんでみんなフツーに回答してんの?
>>752 がわけわかなのって俺だけ?
0762デフォルトの名無しさん2005/12/31(土) 21:11:25
>>761
自分自身に似たような経験があれば、質問者の意図は理解できる。
0763デフォルトの名無しさん2005/12/31(土) 21:23:04
>>752
なんかポインタのど初歩で間違えて内科医?
実引数おかしいよね
0764デフォルトの名無しさん2005/12/31(土) 22:09:06
>>761
こうすれば理解できると思う。
typedef Node *NodePtr;

bool MakeList(NodePtr&);
07657612005/12/31(土) 23:14:04
>bool MakeList(Node*&)
>というように、ノードのポインタのアドレスを引数にし、

ここまではわかる。

>mainから参照したいのですが

なにを? 引数? 関数? 戻り値? それ以外のなにか?

>うまくいきません。

なにが? 引数を渡すこと? 関数呼び出し? 戻り値の取得? それ以外のなにか?

>Node* node;
>if(MakeList(&node)){}
>このように、条件判断に使いたいのですが・・・・

勝手に使えばいいじゃん。

>どうすればいいのですか?

俺も、どうすればいいのですか?
0766デフォルトの名無しさん2005/12/31(土) 23:28:52
うむ。さっぱりわからんな。
0767デフォルトの名無しさん2005/12/31(土) 23:52:27
ぱっと見た感じ>>759->>760で解決では?
if(MakeList(&node)) { ではなくて
if(MakeList(node)) { にしろってこった。
上のじゃコンパイル通らないだろう
0768デフォルトの名無しさん2006/01/01(日) 00:32:19
>>767
確かに、解決もしたんだろうし、そこでコンパイルエラーになって、
& を取っ払えばコンパイルが通るって話はわかる。
が、質問の意味がさっぱりわからん。
0769デフォルトの名無しさん2006/01/01(日) 01:45:47
C++ Primerってこのスレ的にはどうなんですか。
amazonの評価は結構微妙なんですけど禿本に書いてない細かい所とか書いてあるんですよね。
0770デフォルトの名無しさん2006/01/01(日) 01:51:14
量が多いから、1からC++Primerを読んで勉強するには相当辛いものがあるし、
索引がいい加減で、容も離散的に書いてあるから、マニュアル的に使うにも少々難ありって感じ。
俺の感想だけどね。
分からないトピックを絞って、その部分を集中して勉強するようなスタイルなら、それなりに使えるとは思う。

結局本棚の肥やしになってるけど。
0771デフォルトの名無しさん2006/01/01(日) 09:22:40
漏れには>761が判らん。
#「がわけわかなの」?
0772デフォルトの名無しさん2006/01/01(日) 09:27:06
シーケンシャルに読むならやっぱ禿本
ランダム読みに向いているのが C++ Effective
マニュアルは本当に処理系の取説と ISO/JIS の規格票
0773デフォルトの名無しさん2006/01/01(日) 09:31:19
>シーケンシャルに読むならやっぱ禿本
 何の本のことか解りません。
タイトルを正確に教えて
0774デフォルトの名無しさん2006/01/01(日) 09:39:27
おまえら、最初にどの本読んでOOPの世界に入ったのよ。ちなみに俺は
「A級B型C++ (技術評論社かソフトバンク、忘れた、すでに絶版)」
0775デフォルトの名無しさん2006/01/01(日) 09:44:16
古禿
↑ISBN4-8101-8002-6
  ISBN4-8101-8047-6
  ISBN4-7561-1895-X
↓ISBN4-7973-2854-1
新禿
0776デフォルトの名無しさん2006/01/01(日) 11:01:09
禿禿言うなっていう忠告を理解できなかったようだな…
0777デフォルトの名無しさん2006/01/01(日) 11:09:04
ハゲでもいいじゃん。
ハゲこそC++だよ。
0778デフォルトの名無しさん2006/01/01(日) 11:11:17
敬意を込めて禿と呼ぶ
0779デフォルトの名無しさん2006/01/01(日) 11:49:58
>ハゲでもいいじゃん。
>ハゲこそC++だよ。
この本は髪質がツルツルと光って、そのうえ薄すぎて
さらにイタリックで読みにくくない。?
光沢が反射して目がクラクラするのは、俺だけか。
だいだい、あすきー社って、異常に紙質が厚いか
裏面が透過するほど薄いか、ざらざらしているか
値段が他社に比べてトビ抜けて高い。
つぶれてよし、逝ってよし。

練習問題の回答本も別途購入しないといけない。
買う人はいますか。
0780デフォルトの名無しさん2006/01/01(日) 11:53:13

禿げてる奴って脳みそのしわも薄そうだよな。
頭悪そ
0781デフォルトの名無しさん2006/01/01(日) 11:58:15
禿の練習問題は同じ問題をやってみた人同士で論議するように意図されているもので
誰かが出してきた答案を見てそれをやめてしまう他力本願は「ユーザが育てた言語」にそぐわない

値段にしても自己投資として買う人には問題にならない金額だね
0782デフォルトの名無しさん2006/01/01(日) 14:42:27
みなさんにとってのデータアクセスの考え方についてお聞きしたいです。

class CMember
{
private:
int m_Age;
};
というクラスがあった場合、そのメンバーアクセスには
bool SetAge(int Age);
int GetAge() {return m_Age;}
というメンバー関数を用意しておこなうようにしていますが。

もし、他に
CStrVector m_NickName;// 文字列クラスの配列を管理している管理クラス
というデータがあった場合、取得に関してはどのような概念をお持ちでしょうか?

�@メンバー関数は外から干渉絶対にさせないので、コピーにかかる時間は深く考慮せず
CStrVector& GetNickName() {return m_NickName;} とおこなう。

�Aprivateメンバー宣言されている時点で、さわられたくないと言う意思表示をしているので
ポインタを取得させてしまう。
CStrVector* GetNickName() {return &m_NickName;} とおこなう。

ちなみにm_NickNameで配列化される文字列は300個ぐらいです、
各文字列はせいぜい20バイトほどです。
MFCで言えばCStrVectorはCStringArrayのようなものだとお考えください。
作製しているアプリは事務的な物です、決してゲームのような一刻の早さを求める物ではありません。
みなさんならどちらでしょうか?
0783デフォルトの名無しさん2006/01/01(日) 15:02:39
>>782
そのクラスの設計目的を抜きにしてそんなことを議論できるとでも思ってるのが間違い。
0784デフォルトの名無しさん2006/01/01(日) 15:04:18
>>782
実装からインターフェースを考えてるのが間違い。
先にインターフェースを考えろ。
■ このスレッドは過去ログ倉庫に格納されています