Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Visual C++ / С/C++

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 11.01.2010, 02:44   #1
Неактивный пользователь
 
Пол:Мужской
Регистрация: 20.11.2009
Сообщений: 8
Репутация: 0
По умолчанию Указатели и функции класса

Вопрос состоит в следуюшем:

void(*g)(void)=f;
Таким образом мы объявляем указатель g на функцию f с пустым списком параметров, если функция f где-то в программе уже определена. Но что если f принадлежит классу? Как в этом случае объявить указатель на эту функцию?
Event вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Рекомендуем KNS.ru - NX.KTUCD.001 - Подарок каждому покупателю!дискотека авария концерты 2024 москваразмеры ролл апРекомендуем супермаркет KNS - ибп PowerCom RPT-1000A - билеты на футбол в подарок каждому покупателюAsana и Kaiten


Старый 11.01.2010, 11:22   #2
Alan2006
Постоялец
 
Пол:Мужской
Регистрация: 02.07.2009
Сообщений: 393
Репутация: 79
По умолчанию Re: Указатели и функции класса

Во-первых метод класса нужно public сделать... Иначе просто не даст её нормально использовать или даже выполнить...
а потом должен прокатить такой код:

Код:
void(*g)(void)=class_name.function_name;
Хотя это теоретически.. давненько в Си ничего не писал...

Если не секрет, зачем столь хитрые манипуляции?
__________________
Каждый человек, которому вы ответили на форуме "гугл в помощь" - потенциальный "возвращенец" в винды. (ц)
Alan2006 вне форума
 
Ответить с цитированием Вверх
Старый 11.01.2010, 23:10   #3
Event
Неактивный пользователь
 
Пол:Мужской
Регистрация: 20.11.2009
Сообщений: 8
Репутация: 0
Post Re: Указатели и функции класса

Спасибо, что обратили вниманиие на мой вопрос.
Я думаю, эту тему можно закрыть. Указатель на функцию класса объявляется следующим образом:
Код:
void(My_Class::*g)(void) -  на нестатическую функцию
void(*g)(void)                -  на  статическую функцию
Инициализируется он следующим образом:
Код:
g=&My_Class::f;
При этом объект класса можно не создавать и в том и в другом случае!!!
Event вне форума
 
Ответить с цитированием Вверх
Старый 13.01.2010, 22:42   #4
Anchorite
Неактивный пользователь
 
Пол:Мужской
Регистрация: 14.12.2008
Сообщений: 20
Репутация: 1
По умолчанию Re: Указатели и функции класса

Нельзя вызвать нестатическую функцию для несконструированного объекта. Никак нельзя. Даже через указатель на функцию класса.
Anchorite вне форума
 
Ответить с цитированием Вверх
Старый 14.01.2010, 10:14   #5
Alan2006
Постоялец
 
Пол:Мужской
Регистрация: 02.07.2009
Сообщений: 393
Репутация: 79
По умолчанию Re: Указатели и функции класса

Цитата:
Сообщение от Anchorite Посмотреть сообщение
Нельзя вызвать нестатическую функцию для несконструированного объекта. Никак нельзя. Даже через указатель на функцию класса.

Нельзя... но он вроде и не собирался...
__________________
Каждый человек, которому вы ответили на форуме "гугл в помощь" - потенциальный "возвращенец" в винды. (ц)
Alan2006 вне форума
 
Ответить с цитированием Вверх
Старый 14.01.2010, 22:02   #6
Anchorite
Неактивный пользователь
 
Пол:Мужской
Регистрация: 14.12.2008
Сообщений: 20
Репутация: 1
По умолчанию Re: Указатели и функции класса

Цитата:
Сообщение от Event Посмотреть сообщение
Спасибо, что обратили вниманиие на мой вопрос.
Я думаю, эту тему можно закрыть. Указатель на функцию класса объявляется следующим образом:
Код:
void(My_Class::*g)(void) -  на нестатическую функцию
void(*g)(void)                -  на  статическую функцию
Инициализируется он следующим образом:
Код:
g=&My_Class::f;
При этом объект класса можно не создавать и в том и в другом случае!!!

Фраза "При этом объект класса можно не создавать и в том и в другом случае!!!" вводит людей в заблуждение, т.к. для первого случая экземпляр класса однозначно нужен
Anchorite вне форума
 
Ответить с цитированием Вверх
Старый 18.01.2010, 02:36   #7
Event
Неактивный пользователь
 
Пол:Мужской
Регистрация: 20.11.2009
Сообщений: 8
Репутация: 0
По умолчанию Re: Указатели и функции класса

При чем тут объект класса? Ддя того, чтобы проинициализировать указатель на функцию класса, не нужно никакого объекта, товарищи!!!
Этот указатель после инициализации будет содержать количество байт,
которые нужно отступить от начала объекта, чтобы попасть в точку вызова функции.
Но, внимание!!! Для вызова соответствующей функции наличие
объекта обязательно!
Код:
//    Создаем объект класса и вызываем функцию:
void(My_class::*g)(void)=&My_class::f;
My_class object;
(object.*g)();
Event вне форума
 
Ответить с цитированием Вверх
Старый 03.01.2011, 16:12   #8
Fen99
Новичок
 
Пол:Мужской
Регистрация: 03.01.2011
Сообщений: 4
Репутация: 1
По умолчанию Re: Указатели и функции класса

Функция в классе - та же функция вне класса (это знает только компилятор). И если с доступом всё хорошо - всё будет работать
Fen99 вне форума
 
Ответить с цитированием Вверх
Старый 05.02.2011, 09:44   #9
Frugurtita
Неактивный пользователь
 
Пол:Мужской
Регистрация: 05.02.2011
Сообщений: 10
Репутация: 0
По умолчанию Re: Указатели и функции класса

если вункция принадлежит классу то для ее вызова надо иметь указатель на экзкмпляр класса
создай обычную функцию
f(self)
{
self->f();
}

и используй указатель на нее
Frugurtita вне форума
 
Ответить с цитированием Вверх
Старый 06.02.2011, 11:52   #10
Yggdrasil666
Неактивный пользователь
 
Пол:Мужской
Регистрация: 06.02.2011
Сообщений: 6
Репутация: 0
По умолчанию Re: Указатели и функции класса

А как будет при наследовании?
Yggdrasil666 вне форума
 
Ответить с цитированием Вверх
Старый 22.05.2011, 22:02   #11
PlaneWorld
Неактивный пользователь
 
Пол:Мужской
Регистрация: 22.05.2011
Сообщений: 5
Репутация: 0
По умолчанию Re: Указатели и функции класса

указывает на ячейку памяти и принимает это!
PlaneWorld вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эх, дороженька!.. (дорожные знаки и указатели) Dana Dana Галерея Юмора 843 Вчера 14:35
Стрелки, указатели, фигуры, пиктограммы, дорожные знаки, таблички/ Simbols arkad Клипарт векторный 16 23.01.2016 19:17
C# доступ из класса к классу plahmonah Программирование 1 20.04.2010 18:45
Mercedes-Benz S-класса AZLK Новинки Мирового Автопрома 0 01.08.2006 00:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:20. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.20076 секунды с 11 запросами