2012-02-02 10 views
1

私のPageクラスの関数を使いたいが、それを継承したくない。継承を使用せずにelementおよびelementXクラスonPage(vector<string> vec)関数を使用できる別の方法はありますか?アソシエーションは動作しますか?私はそれを考えていた。他のクラスの関数を呼び出す

コードは以下の通りです:

class Page 
{ 
    string str; 
    vector<string>::iterator it; 

    void onPage(vector<string>vec); 
}; 

class element 
{ 
    Page p; 
}; 

class elementX : public element 
{ 
}; 

答えて

2

ので、外国のクラスがそれにアクセスすることができ、publicことを宣言します。

class Page 
{ 

    string str; 
    vector<string>::iterator it; 

public: 
    void onPage(vector<string>vec); 


}; 

(あなたがそれらすべてを読んでください、クラスメンバーへのアクセスを制御するためにpublicprivateprotectedを使用することができます。privateは、クラスのデフォルトです)。

1

はいできます。私が見ることができる問題は、クラスメンバーがデフォルトでC++でprivate(他のクラスでは非表示)なので、void onPage(vector<string>vec);関数をpublicとして宣言していないことです(関数の前には、public:が置かれています)。

+0

okありがとう、私はそれを逃してしまったので、私は要素クラスでonPage(ベクトル vec)関数を使用することができますか? – CodersSC

+0

正確です。もう一つの選択肢は、 'element'クラスをPageの' friend'( 'Pageクラス'の中の 'friend class element')宣言することですが、それは非常に悪いスタイルです。 –