将引用参数传递给采用 unique_ptr 的通用引用的函数

问题描述

我有两个无法更改其签名的函数。第一个引用一个对象,而第二个引用一个指向同一对象的唯一指针的通用引用。我不确定如何将第一个参数传递给第二个。

我已经尝试过传递一个带有引用地址的新的唯一 ptr,但是由于引用是抽象的,编译器会抱怨未实现的方法。

这是一个例子:

// Example program
#include <iostream>
#include <memory>


class MyAbstractClass {
public:
  virtual void doSomething() = 0;    
};

class MyConcreteClass : public MyAbstractClass {
public:
  void doSomething() override {
    std::cout << "Hello I do something" << std::endl;
  }
};

class MyUserClass {
public:
  MyUserClass(MyAbstractClass& mac){
    // the line below doesn't work !!
    doSomethingElse(std::make_unique<MyAbstractClass>(&mac));
  }
  void doSomethingElse(std::unique_ptr<MyAbstractClass>&& mac){
    mac->doSomething();
  }  
};


int main() {
  MyConcreteClass mcc;
  MyUserClass muc(mcc);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)