小编Kam*_*nji的帖子

将指针添加到另一个对象

我有两个不同类的实例,它们派生自同一个抽象基类.我有一个指向其中一个实例的指针.如何使用相同的指针指向另一个实例?

c++ pointers object

0
推荐指数
1
解决办法
88
查看次数

将原始指针传递给接受unique_ptr作为参数的函数

我正在尝试编写一个函数,接受unique_ptr到Base作为参数派生的类(表示所有权转移).我想出了以下代码:

#include <memory>
#include <type_traits>

class Base
{
  public:
    Base() {}
};

class Derived : public Base
{
  public:
    Derived() {}
};


void foo(std::unique_ptr<Derived> _data) {}

template <class T>
void boo(std::unique_ptr<T> _data) {
    static_assert(std::is_convertible<T*, Base*>::value,
                  "Only classes derived from Base can be used as "
                  "parameter for boo");
}


int main() { foo(new Derived); }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译它时,我得到并且错误地告诉我,could not convert ‘(operator new(1ul), (<statement>, ((Derived*)<anonymous>)))’ from ‘Derived*’ to ‘std::unique_ptr<Derived>’如果我在使用时使用foo和相同(加上一些模板细节)boo.如果我正确地理解了一切,我被告知的是没有构造函数std::unique_ptr<Derived>可以接受指针Derived.但是当我在unppue_ptr构造函数的cppreference 页面上查看时,我看到有这样的构造函数(编号3-4). …

c++ templates smart-pointers

0
推荐指数
1
解决办法
377
查看次数

标签 统计

c++ ×2

object ×1

pointers ×1

smart-pointers ×1

templates ×1