Pointers 错误:C2280创建类的唯一_ptr向量

Pointers 错误:C2280创建类的唯一_ptr向量,pointers,c++11,vector,game-engine,copy-constructor,Pointers,C++11,Vector,Game Engine,Copy Constructor,似乎在向量中使用唯一的ptr时,我得到一个错误,说明: 错误1错误C2280:'std::unique_ptr::unique_ptr(const std::unique_ptr&'):尝试引用已删除的函数c:\pr…ude\xmemory0 593 1 Win32Project1 似乎没有配置允许我存储指向UserInterface类的[smart]指针,该类具有简单的结构: #define InterfaceContruct vector<unique_ptr<UserInter

似乎在
向量中使用唯一的ptr时,我得到一个错误,说明:

错误1错误C2280:'std::unique_ptr::unique_ptr(const std::unique_ptr&'):尝试引用已删除的函数c:\pr…ude\xmemory0 593 1 Win32Project1

似乎没有配置允许我存储指向UserInterface类的[smart]指针,该类具有简单的结构:

#define InterfaceContruct vector<unique_ptr<UserInterface>>

class UserInterfaceMgmt
{
public:
    UserInterfaceMgmt();
    ~UserInterfaceMgmt();

    InterfaceContruct Interface;

    void AddUIElement();
    void RemoveUIElement();
    void DrawInterface();
    void MoveElement();
private:
};
std::vector
(以及
std::
中的大多数其他容器)要求值类型是可复制构造的<代码>标准::唯一\u ptr
不可复制。使用
std::shared_ptr
或任何其他可复制的类型/指针

线索是查找试图引用已删除函数的
。这意味着已经使用了某种方法
=delete
。例如:

struct Foo
{
    Foo(const Foo & rhs) = delete; // A deleted function
}

那个错误消息的实例化回溯是什么?你的“UserInterface”类是什么样子的?我明白了。行得通我下定决心要让它发挥作用,我“知道”我能飞。我知道unique#ptr会删除复制构造函数,但试图巧妙地使用它。我将测试一个基本配置,然后返回mark as answer。@RashidEllis:您不应该使用
#define interfaceconstruct vector
,但是
typedef-vector-interfaceconstruct
或使用interfaceconstruct=vector的新C++11方式
编译器处理这些代码的方式是否有差异?它可以工作!再次感谢(我查看了处理器定义,它看起来像是
#define
是一个盲定义;它被切换到
使用…
C++11类型)
struct Foo
{
    Foo(const Foo & rhs) = delete; // A deleted function
}