sandy
написал 5 июня 2007 года в 13:35 (864 просмотра)
Ведет себя
как мужчина; открыл 10 тем в форуме, оставил 54 комментария на сайте.
Имеется класс-родитель с инкапсулированным членом типа Т
class A {
protected:
T t;
};
В классе-потомке есть статическая функция, которой нужно получить доступ к члену родителя
class B: public A
{
char* (*p)();
public:
static char* f()
{
return t.member();
}
};
Статической функцию пришлось сделать, так как на нее будет указывать p
Доступа к t из статической функции получить нельзя.
Как быть?
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Может убрать из базового класса страшное слово «protected»?
Дело не в защищенности члена. Дело в том, что функция статическая
Так решил проблемку:
class A {
protected:
T t;
};
class B: public A
{
char* (*p)(T&);
public:
static char* f(T& t)
{
return t.member();
}
};
Не знаю, насколько это элегантно, может кто выскажется
Вы имели в виду, что нельзя сделать указатель на не статическую функцию?
char*(A::* p)();
Сложно высказаться не зная архитектуры программы, её логики: что, как, зачем, почему.
Ты точно уверен в необходимости делать функцию f статической?
Просто в таком раскладе ты хочешь странного… получить из статической функции значение поля еще не инстанцированного класса.
Не мешайте. Пусть делает как нравится. Чем быстрее получит граблями по лбу, тем быстрее научится.
Спасибо, конечно, за ответы. Но, вы на дату смотрите?
У меня там вроде была std::map указателей на статические функции
Статическими я их объявил только по причине улучшения производительности
А хто сказал, что статические производительнее?
гм… бывает иногда мертвые восстают из пепла :)