非メンバ関数からメンバ関数を呼ぶには?

[戻る]
らさ [E-Mail] 2000/08/02(水) 10:08:25
最近、C++(VC++)をはじめました。
さっそくなのですが、質問です。

非メンバ関数からメンバ関数を呼ぶにはどうしたらよいのでしょうか。

ご教授よろしくお願いします。

inuo [E-Mail] [HomePage] 2000/08/03(木) 08:24:40
非メンバ関数をfunc()、メンバ関数をA::MemberFunc()とすると

class A{
public:
    A();
    void MemberFunc();
};


void func()
{
    A a;
    a.MemberFunc();
}

ってことですか?
質問の意味取り違えてたらごめんなさい。

じゃぶろー [E-Mail] [HomePage] 2000/09/07(木) 15:52:02
非メンバ関数からメンバ関数を呼ぶ方法・・・こうかな?
//設定//
非メンバ関数...foo()
メンバ関数  ...hogehoge()
要するにfoo() から hogehoge()が呼べればいいんですよね?

/*** Source ***/
#include <iostream>
using namespace    std;

void foo(){   cout << "calling foo" << endl;  }  //非メンバ関数

class clsTest
{
public:
   void hogehoge(){ foo();}                      //メンバ関数
};

void main()
{
   clsTest Q;
   Q.hogehoge();
}


↑で呼べると思うんですが・・・
質問の答えは多分呼び出される関数の宣言位置ミスだと思います...

注意としては呼び出される非メンバ関数の宣言が
呼び出すメンバ関数より(宣言上)前にないといけ
ないと思います。

だから、定義のみ「void foo();」などとヘッダーに書いて
先に宣言すれば問題ないと思います。


逆で
foo()からhogehoge()を呼びたい場合は
※hogehogeがprivate/protectedの場合
foo() をclass内のfriend関数に指定して呼んであげれば大丈夫だと思います

違ったらゴメンナサイ...

古いスレッドには追加発言できません。