提问者:小点点

结构不可赋值?


我有一个结构:

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个答案

匿名用户

不会为生成默认赋值运算符,因为它的格式会不正确。它所做的只是按成员方式进行分配,而这显然是不允许在成员上进行的。

相反,不要将它们声明为。如果不打算在赋值运算符之外修改它们,只需将它们放在节中,并且不提供允许修改的接口。