结构不可分配?

时间:2014-02-18 20:06:22

标签: c++ struct assign

我有一个结构:

struct Handle 
{
public:
    const unsigned long Id;
    const std::type_index Index;
    Handle() : Id(-1), Index(std::type_index(typeid(Event))){}
    Handle(unsigned long id, std::type_index index) : Id(id), Index(index) {}
};

但是当我尝试将它分配给变量时我得到了

  

错误10错误C2582:'eventHandler :: Handle'中''operator ='函数不可用

为什么? (我正在使用结构,因为据我所知,它们作为数据类型处理,可以从函数返回而不用new创建。这是正确的吗?)

1 个答案:

答案 0 :(得分:12)

不会为Handle生成默认赋值运算符,因为它的格式不正确。它所做的只是简单地指定成员,const成员显然不允许这样做。

相反,不要声明他们const。如果它们不打算在赋值运算符之外进行修改,只需将它们放在private部分中,并且不提供允许修改的界面。