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
}