mcrblog

vcpp-ml

1999年12月

31

[vcpp 00036077] Re: Re: Re:メンバ変数の参照

 こちらは、かわむら@DSTです。

Takuya Murataさんの
[vcpp 00036067] Re: Re: Re: メンバ変数の参照 に関してです。

揚げ足取りのようで恐縮ですが・・・

>Takuya Murataさんが おっしゃいました・・・・
>------引用ここから、(適宜省略・改行位置の変更をしてます)-----
>
>> int は、クラス(や構造体)ではないから、メンバはもてません。
>いえ、この場合は、eがintでabcdはクラス(あるいは構造体)ということです。

> a.b.c.d.e.f
*>int &g = a.b.c.d.e ;
なので、
struct E{ int f; };
struct D{ E e; }; struct C{ D d; }; struct B{ C c; }; struct A{ B b; };
みたいな構造になって、e は f を持つ構造体のハズと言いたかったのです。

> 実体というのはアドレスを格納している領域ということです
実際に値を格納している領域を実体と呼んで下さい。拘りませんけど (・・;)

>私のいいたかったのは、基本的には参照といえども、
>アドレスを格納している限り、ポインタと同じくサイズはあるということです。
>struct Hoge { int i ; };
>より、
>struct Hoge { int i ; int &ref ; } ;
>の方が大きくなるので、サイズがあるのではと。

なるほど、そういう sizeof の調べ方もありますね。
# 老婆心ながら、この場合 int も4Byteなので別の型のほうが適切では?


中野@PALさんがおっしゃいました。
------------------------------// 引用開始//------------------------------
>元記事では、
>bananaはstructで、class fruitの中でprivate宣言されています。
>したがってこの場合、アクセス制限を気にすることは無意味では
>ないでしょうか。
た たしかに・・
>もちろん「C++の一般論」にまで話を拡大した場合は、この限りでは
>ありません。
でしたら、仰せの通りです。m(_ _)m

こちらは、かわむら@DST( MailTo:a...@pc-daiwabo.co.jp )でした。
31

[vcpp 00036076] Re: Re: Re: メンバ変数の参照

こんにちは、中野@PALです。

On Thu, 30 Dec 1999 20:14:36 +0900
"Takuya Murata" <s...@bu.iij4u.or.jp> wrote:
> 村田です。
> > こちらは、かわむら@DSTです。
> >
> > ex) inline int &rTest(){ return Philippine.test; };
> >  rTest()++;// Philippine.testのインクリメント
> > # 中野@PALさんのマクロとの違いは、アクセス制限を掛けられる点です。

> つけたしておくと、型とかデバックのときに見えるとか、とにかくマクロよりは
> 良いですね。

元記事では、
bananaはstructで、class fruitの中でprivate宣言されています。
したがってこの場合、アクセス制限を気にすることは無意味では
ないでしょうか。

要は、非常にベーシックな階層にある class fruitを記述する
プログラマが、privateなbananaへのアクセスにキーを多く叩きたく
ない^^;;という要求に対する回答を求めていると判断しました。
こういう、自分で責任がとれる範囲で、かつシンプルな要求の場合
マクロはC++においても有効なソリューションとなり得る事が多いと
思います。

もちろん「C++の一般論」にまで話を拡大した場合は、この限りでは
ありません。

#C++でマクロが使われないのは、同じ事がもっと良い
#方法で書ける「事が多い」からです。
#私は、Philippine.test とタイプしますね(笑)

--------
Kaoru Nakano, E-Mail: n...@palnet.or.jp
31

[vcpp 00036075] Re: WM_COMMANDメッセージについて

ども。
お世話になってます。
SDK初心者のしゅうです。

> > いろいろあるとおもうのですが、
> > 例えば「ボタンを押した時」にこの WM_COMMANDメッセージを送ろうとした時には
> > どんな通知コードが使われるのでしょうか?
> この場合、BN_CLICKEDですね。
> ヘルプのそれぞれのコントロールの解説をみると一覧があると思います。

なるほど。
コントロールにたいしてどんな働き方をしたかっていうのを記述するわけですね。
謎が解けました(笑)
ありがとうございます(^^)


それでは失礼いたします。


======================================================================
      しゅう@SDK屋
    ----------------------------------------------------------------
      ICQ UIN : #20411143
      E-Mail : k...@cg.NetLaputa.ne.jp
======================================================================
31

[vcpp 00036074] operator <


operator < を既に存在する,int, char *, と関連付けたい場合に,
どうするのが良いのでしょうか?とりあえず,私の知識では下記の
ような方法しか思いつきません。
# streamも例外の使わないので,Templateを使っていて
  も非常にコンパクトな実行ファイルが生成されます。
# ところで,VC 以外のSTLは,operator new に失敗すると,
  cout << "out of memory" << endl;
  exit(1);
  となってしまいますが,これは仕方が無いのでしょうか?

#include <stdio.h>
#include <string.h>

template<class T>
class dumch {
public:
    char *m_ptr;
    dumch( T ptr )      { m_ptr = ptr; }
    operator = (T ptr)  { m_ptr = ptr; }
    void *operaror()    { return m_ptr; }
    operator T()        { return m_ptr; }
    operator < (T ptr)
        { printf("(<)"); return stricmp( m_ptr, ptr ) < 0; }
    operator > (T ptr)
        { printf("(<)"); return stricmp( m_ptr, ptr ) > 0; }
    operator == (T ptr)
        { printf("(=)"); return stricmp( m_ptr, ptr ) == 0; }
};

int main()
{
    char *ptr = "abc";
    char *ptr2 = "def";
#if 1
#define ptr (dumch<char*>)ptr
    if( ptr < ptr2 )
        { printf(" %s < %s\n", ptr, ptr2); }
    if( ptr > ptr2 )
        { printf(" %s > %s\n", ptr, ptr2); }
    if( ptr == ptr2 )
        { printf(" %s == %s\n", ptr, ptr2); }
#else
    #define dum  dumch<char *>
    if( dum(ptr) < dum(ptr2) )
        { printf(" %s < %s\n", ptr, ptr2); }
    if( dum(ptr) > dum(ptr2) )
        { printf(" %s > %s\n", ptr, ptr2); }
    if( dum(ptr) == dum(ptr2) )
        { printf(" %s == %s\n", ptr, ptr2); }
#endif
    return 0;
}

- -- C4B2 52B9 70B4 291B C966  B71F 9B8A 86E1 29B7 6B09
as you like.. e-mail;mailto:v...@ha.bekkoame.ne.jp
31

[vcpp 00036073] Re: WM_COMMANDメッセージについて

中村です。

At 1999/12/31 05:08:01 北代 周平 wrote:
> いろいろあるとおもうのですが、
> 例えば「ボタンを押した時」にこの WM_COMMANDメッセージを送ろうとした時には
> どんな通知コードが使われるのでしょうか?
この場合、BN_CLICKEDですね。
ヘルプのそれぞれのコントロールの解説をみると一覧があると思います。


---
Satoshi Nakamura <s...@kiwi.ne.jp>
記事検索
Amazon.co.jp
  • ライブドアブログ