メンバ関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
JugS

メンバ関数について

#1

投稿記事 by JugS » 17年前

最近よく利用させて頂いてます。

あるクラスaで宣言、定義したメンバ関数faを、
別のクラスbのメンバ関数fb内で呼び出すことは出来ますか?

クラスaをクラスbに継承するしかないのでしょうか?

組木紙織

Re:メンバ関数について

#2

投稿記事 by 組木紙織 » 17年前

>あるクラスaで宣言、定義したメンバ関数faを、
>別のクラスbのメンバ関数fb内で呼び出すことは出来ますか?

出来たりできなかったりするので、
自分で実際にやってみたらどうでしょうか?

yuuki++

Re:メンバ関数について

#3

投稿記事 by yuuki++ » 17年前

フレンドクラスなんてものがありませんでしたっけ?

class a {
friend b;
private:
fa();
}

とかやると、フレンドクラスbからはクラスaのメンバにアクセスできるはずです(多分・・・)
ちょっとクラスは苦手なので、自分で試してみて下さい・・・笑

yuuki++

Re:メンバ関数について

#4

投稿記事 by yuuki++ » 17年前

おっと、
friend class b;
ですね。

J

Re:メンバ関数について

#5

投稿記事 by J » 17年前

staticな関数にするか参照渡しにするかですね。

JugS

Re:メンバ関数について

#6

投稿記事 by JugS » 17年前

フレンドクラスにすると、カプセル化が意味をなさなくなる気がするので
極力使いたくはないですが、
オブジェクト指向で打ち始めたばかりなので、試しに打ってみようと思います。


今の私の知識では、フレンド以外では継承するぐらいしか思いつかないのですが、
継承も多用すると、手続き型のプログラムになってしまいそうなのですが、
どうなのでしょうか?

御津凪

Re:メンバ関数について

#7

投稿記事 by 御津凪 » 17年前

こうすれば良いのではないでしょうか?
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:メンバ関数について

#8

投稿記事 by たかぎ » 17年前

無関係なクラスから呼び出す必要があるなら、メンバ関数をpublicにすべきです。
それがどうしてもできない事情があるのなら、その時点ではじめて違うことを考えましょう。

JugS

Re:メンバ関数について

#9

投稿記事 by JugS » 17年前

まだ完全に構想が固まってないので、イメージしにくいのですが、
出来そうな気がするので、打ってみます。

御津凪さん
サンプルまで打っていただき、ありがとうございます。

JugS

Re:メンバ関数について

#10

投稿記事 by JugS » 17年前

すいません。
解決マークを出してませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る