ページ 1 / 1
メンバ関数について
Posted: 2008年9月15日(月) 18:23
by JugS
最近よく利用させて頂いてます。
あるクラスaで宣言、定義したメンバ関数faを、
別のクラスbのメンバ関数fb内で呼び出すことは出来ますか?
クラスaをクラスbに継承するしかないのでしょうか?
Re:メンバ関数について
Posted: 2008年9月15日(月) 18:30
by 組木紙織
>あるクラスaで宣言、定義したメンバ関数faを、
>別のクラスbのメンバ関数fb内で呼び出すことは出来ますか?
出来たりできなかったりするので、
自分で実際にやってみたらどうでしょうか?
Re:メンバ関数について
Posted: 2008年9月15日(月) 18:40
by yuuki++
フレンドクラスなんてものがありませんでしたっけ?
class a {
friend b;
private:
fa();
}
とかやると、フレンドクラスbからはクラスaのメンバにアクセスできるはずです(多分・・・)
ちょっとクラスは苦手なので、自分で試してみて下さい・・・笑
Re:メンバ関数について
Posted: 2008年9月15日(月) 18:41
by yuuki++
おっと、
friend class b;
ですね。
Re:メンバ関数について
Posted: 2008年9月15日(月) 21:56
by J
staticな関数にするか参照渡しにするかですね。
Re:メンバ関数について
Posted: 2008年9月16日(火) 20:27
by JugS
フレンドクラスにすると、カプセル化が意味をなさなくなる気がするので
極力使いたくはないですが、
オブジェクト指向で打ち始めたばかりなので、試しに打ってみようと思います。
今の私の知識では、フレンド以外では継承するぐらいしか思いつかないのですが、
継承も多用すると、手続き型のプログラムになってしまいそうなのですが、
どうなのでしょうか?
Re:メンバ関数について
Posted: 2008年9月16日(火) 20:35
by 御津凪
こうすれば良いのではないでしょうか?
class A{
public:
void fa(){
}
};
class B{
public:
void fb(){
a.fa();
}
private:
A a;
};
あるいは、
class A{
public:
void fa(){
}
};
class B : public A{
public:
void fb(){
fa();
}
};
カプセル化の意味なら後者だと思いますが、ご希望に合っていますでしょうか?
Re:メンバ関数について
Posted: 2008年9月16日(火) 21:14
by たかぎ
無関係なクラスから呼び出す必要があるなら、メンバ関数をpublicにすべきです。
それがどうしてもできない事情があるのなら、その時点ではじめて違うことを考えましょう。
Re:メンバ関数について
Posted: 2008年9月16日(火) 21:20
by JugS
まだ完全に構想が固まってないので、イメージしにくいのですが、
出来そうな気がするので、打ってみます。
御津凪さん
サンプルまで打っていただき、ありがとうございます。
Re:メンバ関数について
Posted: 2008年9月23日(火) 01:15
by JugS
すいません。
解決マークを出してませんでした。