![]() |
|
Модераторы: bsa |
![]()
|
|
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Здравствуйте, помогите пожалуйста разобраться с использованием функций одного класса другим. Например, нужно использовать функцию func1 класса Class2 в классе Class1:
Объявление класса Class1 другом класса Class2 не помогает, либо я неправильно обращаюсь к функции func1() в классе Class1. Как правильно это сделать? |
|||
|
||||
| mekhanikus |
|
|||
|
Вольноопределяющийся ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 16.6.2008 Где: Спасск-Дальний Репутация: нет Всего: 1 |
Попробуй так:
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не-статические функции класса нельзя вызывать без указания объекта. P.S.и для начала постарайтесь разобраться что такое класс, а что такое объект - без этого дальнейшее изучение ООП в Cpp будет затруднительным. Это сообщение отредактировал(а) mes - 20.7.2009, 13:36 |
|||
|
||||
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Сделал так:
Не помогло. Ошибка: func1: идентификатор не найден |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
*** можно. только извращённо.
но при этом мы теряем доступ к указателю this. Это сообщение отредактировал(а) zim22 - 20.7.2009, 13:43 |
||||
|
|||||
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо, дело было в объявлении функции статической.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
нда.. a это разве не указатель на объект (хоть и невалидный) ?! P.S. и в теме для новичков подобные извращения, к тому же неправильно преподнесенные, имхо, излишние. Это сообщение отредактировал(а) mes - 20.7.2009, 14:46 |
|||
|
||||
| Леопольд |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Статическая функция - одна для всех экземпляров одинакового типа во всей программе. Надеюсь из следующего куска кода будет понятно в чём именно отличие static функций-членов (static методов класса).
Вызываются они вот так:
Если же в функцию static void sta_set(C* that, int val) не передавать указатель/ссылку that (любым способом) то эта функция не будет иметь доступа ни к одному созданному объекту класса (инстансу класса) и, соответственно, к его членам. Она будет иметь доступ только к статическим данным этого класса. Это сообщение отредактировал(а) Леопольд - 20.7.2009, 19:27 -------------------- вопросов больше чем ответов |
||||||
|
|||||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Вот пример с "дружелюбными" классами. Функции "работают" идентично.
-------------------- вопросов больше чем ответов |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |