Как реализовать функцию-оболочку, чтобы изменить тип возвращаемого значения другой функции? - PullRequest
1 голос
/ 11 июля 2011

Предположим, такая функция в сторонней библиотеке:

rttype func(...);

Как написать функцию-оболочку, которая функционирует одинаково, но отличается только тем, что ее тип возвращаемого значения равен rttype * вместо rttype

Ответы [ 2 ]

4 голосов
/ 11 июля 2011

Вообще говоря, нет. Временами движение в другом направлении может быть разумным, но в ту минуту, когда вы возвращаете указатель, вы вводите вопросы о жизни и собственности. В частности, на что вы возвращаете указатель, и на чьей ответственности (если кто-то есть) состоит в том, чтобы освободить память, на которую он указывает?

Эти вопросы, как правило, влияют на общий дизайн, поэтому вы не можете их разумно решить в простой оболочке.

3 голосов
/ 11 июля 2011

Вы должны будете выделить глобальную память (память в куче), назначить там rttype и затем вернуть указатель на выделенную память. Конечно, для этого вам придется в дальнейшем освободить память.

Однако, делая это, вы изменяете семантику и дизайн функции, и вам следует помнить об этом и вносить другие изменения ответственно, чтобы уважать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...