非メンバ関数からメンバ関数を呼ぶには? – プログラミング – Home

非メンバ関数からメンバ関数を呼ぶには?
 
通知
すべてクリア

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


らさ
 らさ
(@らさ)
ゲスト
結合: 24年前
投稿: 1
Topic starter  

最近、C++(VC++)をはじめました。
さっそくなのですが、質問です。

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

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


引用解決済
トピックタグ
inuo
 inuo
(@inuo)
ゲスト
結合: 24年前
投稿: 6
 

非メンバ関数をfunc()、メンバ関数をA::MemberFunc()とすると

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

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

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


返信引用
じゃぶろー
 じゃぶろー
(@じゃぶろー)
ゲスト
結合: 24年前
投稿: 8
 

非メンバ関数からメンバ関数を呼ぶ方法・・・こうかな?
//設定//
非メンバ関数...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関数に指定して呼んであげれば大丈夫だと思います

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました