假设第三方库中有这样的功能:
rttype func(...);
如何编写一个功能相同但只是不同的包装函数,其返回类型为rttype *
而不是rttype
?
答案 0 :(得分:4)
一般来说,你没有。走向另一个方向有时可能是合理的,但是当你返回指针时,你会引入有关生命和所有权的问题。特别是,你返回指针的是什么,谁负责(如果有人的话)释放它所指向的记忆?
这些问题通常会影响整体设计,因此它们不是您可以在简单包装中合理解决的问题。
答案 1 :(得分:3)
您必须分配全局内存(堆上的内存),在那里分配rttype,然后返回指向已分配内存的指针。当然,这样做你将不得不在以后处理释放内存。
然而,通过这样做,你正在修改函数的语义和设计,你应该记住这一点并负责任地做出其他改变以尊重这一点。