150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
|
||||||
1 | ||||||
Получить указатель на объект который вызвал метод или Функцию в теле самой функции16.11.2011, 14:53. Показов 3870. Ответов 5
Метки нет (Все метки)
Доброго времени суток!
Можно ли не передавая явно указатель на объект(this) получить к нему доступ из функции вызванной одним из методов этого класса. т.е. Если раскоментировать строки (6,9, и 21) и убрать 12 то все будет работать Собственно вопрос: Можно ли обойтись без передачи указателя (this), ведь на сколько я понимаю при вызове функции, компилятору должно быть ясно, кто вызвал функцию (ну или метод класса), и неоднозначности возникнуть не должно.
0
|
16.11.2011, 14:53 | |
Ответы с готовыми решениями:
5
QScriptEngine, как получить указатель на объект в коде функции С++, вызвашвий функцию в скрипте? Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект Указатель на объект или указатель на метод объекта В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
16.11.2011, 15:21 | 2 |
FireNovel, Нет. Статик функции могут оперировать онли со статик данными.
0
|
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
|
|
16.11.2011, 16:10 [ТС] | 3 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
16.11.2011, 16:19 | 4 |
FireNovel, Ну тогда очевидно. Если функция нестатическая и не является свободной функцией => вызывается с this автоматически. Следовательно доступ к полям произвести элементарно.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
16.11.2011, 16:20 | 5 |
нет, компилятору это ясно не будет
в принципе, этого можно добиться, если ты унаследуешь C1 от C2 (но тут либо C2::get_a должен быть статическим методом, либо C1::sample - нестатическим). Но не факт, что это подойдет для конкретной задачи
1
|
Заблокирован
|
|
16.11.2011, 18:06 | 6 |
Во-первых, почему вы решили, что компилятору известно, кто вызвал функцию? Как раз это компилятору неизвестно! Вы определили статическую функцию класса. Ее может вызвать любой код программы, имеющий доступ к этой открытой функции. То есть совсем не обязательно, что эту функцию будет вызывать функция-член класса. И что тогда делать компилятору? Как ему в вызываемую функцию передать информацию, что ее вызвала функция - не член класса?!
Компилятор не ломает голову над тем, кто вызывает функцию. Он лишь заносит в стек аргументы для функции и передает управлению по адресу точки входа функции. Только и всего.
1
|
16.11.2011, 18:06 | |
16.11.2011, 18:06 | |
Помогаю со студенческими работами здесь
6
Чем отличаются указатель в теле функции и в аргументе Как получить ссылку на указатель или указатель на указатель в массиве? Основы: указатель на объект или объект, что выбрать? Функция, получающая указатель на обычную функцию, получает указатель на метод класса Нужен простой пример передачи одной функции или метода в другую функцию или метод Скопировать объект, на который ссылается указатель на абстрактный класс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |