映画のエンドロール観る派?観ない派?

javaを少し触った程度でしかない私ですが、
他人のC++のプログラムを眺めていて、
よく分からない事があり、
内容について、
確認させてもらいたいたく2点質問させてもらいます。

すごく初歩的な内容なのかもしれませんが、
アドバイスもらえると嬉しいです。


=================================================

(1) typedef owatashi<zoo<fruit, flower>, shop<fruit, flower>> owatashi_type;
(2)
(3) void send(const fruit_type& fruit, const flower_type& flower) {
(4) owatashi_type::speak(id::okuru(owatashi_type::bits()));
(5) }

=================================================

上記内容のプログラムだったのですが、

ネットでtypedefを調べていて、
「owatashi」を「owatashi_type」に
名前の変換をしていているのまでは、
分かったのですが、

4行目の「owatashi_type::bits()」の部分で
誰かに聞いてみたい事が出てきました。



これは直前で、
「owatashi」が「owatashi_type」に
typedefされているので、

「owatashi」クラスや構造体(?)の下に、
「bits()」というオブジェクトがあるという意味で
合っているでしょうか?
探し方合っていますでしょうか?

確かに、このcppファイルとは別の場所にある、
「owatashi」クラスを見つけ、
下記のような、「owatashi」クラスの下に、
「bits()」という記述も見つけました。
どうも自信がなく、
誰かに聞きたい気持ちになってしまいました。

プログラムの見方(追い方)として間違っていないか?が不安です。
アドバイスの程宜しくお願いします。

=========================
int bits(){
return _shop -> bits();
}
=========================


2つ目の質問です。
1つ目の質問と同様に4行目にある、
「owatashi_type::speak」の部分についてなのですが、

「owatashi」クラスを見つけ、
「owatashi」クラスの下に、
「speak」という記述があるか?を確認したのですが、
下記のとおり、boostに囲まれた記述のみが確認できました。

=========================
boost::shared_ptr<zoo> speak(const id& id) {
return _shop->speak(id);
}
=========================

ネットで調べていて、
boostというライブラリが何なのか?というのは、
ぼんやりと分かったのですが、

一番知りたいのは、
1つ目の質問と同じなのですが、
プログラムの見方(追い方)として間違っていないか?が不安です。
「owatashi」クラスの下に、
「speak」というオブジェクトがあるという意味で
合っているでしょうか?

皆様どうぞ宜しくお願い致します。

A 回答 (1件)

 こんにちは。



 うう~む、どう見ても初級だなんて簡単なモノでは無いです・・・。
 取り敢えず、見方は其れでよいのだと思います。
 其の呼び出し方は、staticメンバ関数ではないでしょうか。

 以下は当方の勝手な想像

 template<class zoo, class shop>
 class owatashi
 {
 public:
  static int bits();
  static boost::shared_ptr<zoo> speak(const id& id);
 private:
  static shop* _shop;
 };

 owatashi<zoo<fruit, flower>, shop<fruit, flower>>::bits();

 と書く代わりに

 typedef owatashi<zoo<fruit, flower>, shop<fruit, flower> > owatashi_type;
 owatashi_type::bits();

 と書ける。owatashi_type::speak()についても同様。

 後、boost::shared_ptr<T>と言うのは、boostライブラリの中にある、リファレンスカウンタ方式のスマートポインタの事です。

 なのでowatashi<zoo, shop>クラスの中に、speak()とbits()というstaticメンバ関数があり、其れを呼び出しているのではないでしょうか。
    • good
    • 0
この回答へのお礼

machongolaさん!

ご回答いただきまして、
ありがとうございました!
とても内容分かりやすかったです!
そして、理解する事ができました!

周りに聞ける人がいないため、
とても参考になりました。
ありがとうございます!

お礼日時:2009/02/13 13:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!