【问题标题】:raw and smart pointers mixed function overloading原始和智能指针混合功能超载
【发布时间】:2016-09-03 10:38:58
【问题描述】:

在我的项目中,我混合了智能指针和原始指针。有些函数需要同时适用于原始函数和智能函数,在函数中我只在指针上使用->=*。我的问题是,如果我有多个参数,我是否必须编写每个函数两次甚至更多次,或者如果我可以做一些事情,我可以同时传递智能指针和原始指针。我在考虑一个包装类,包含指针或类似的东西。

【问题讨论】:

  • 当您= 时,您分配来自(和/或)什么类型?总是同一类型?所有权很棘手,一般不知道如何这样做。其他一切,使用模板和/或类型擦除。

标签: c++ pointers c++11 smart-pointers


【解决方案1】:

(这个问题会从代码示例中受益匪浅,但我会尝试回答。)

我建议通过 referenceconst reference 传递,然后在将参数传递给函数时在任一指针上使用 * 运算符.

由于您的函数应该与 raw 或 smart 一起使用,而且对您来说这并不明显:D,这对我来说意味着实现不需要对所有权做任何事情。比如,出于某种原因,复制一份shared_ptr。这意味着,最好将它们写成引用,因为它们不关心所有权。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2016-08-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多