2012-02-02 6 views
1

Я хочу использовать функцию из своего класса Page, но я не хочу наследовать ее. Есть ли другой способ использовать функцию onPage(vector<string> vec) в моих element и elementX классе без использования наследования? Будет ли работа в ассоциации? Я думал об этом.Функции вызова из других классов

код ниже:

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); 


}; 

(вы можете использовать public, private и protected для контроля доступа к членам класса, убедитесь, чтобы прочитать их все. private по умолчанию для классов).

1

Да, вы можете. Проблема, которую я вижу, заключается в том, что вы не объявили функцию void onPage(vector<string>vec); открытой (место public: перед функцией), так как классы по умолчанию равны private (скрытые для других классов).

+0

ok yeas спасибо, я пропустил это, так что с пульсией там я смогу использовать функцию onPage (вектор vec) в классе элементов? – CodersSC

+0

Точно. Другой вариант - объявить класс 'element'« другом »страницы (' элемент класса friend' внутри 'Page'), но это будет очень плохой стиль. –

Смежные вопросы