我有一个结构:
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) {}
};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将它分配给我得到的变量时
错误10错误C2582:'eventHandler :: Handle'中的'operator ='函数不可用
为什么?(我正在使用结构,因为据我所知,它们作为数据类型处理,可以从函数返回而不用new创建.这是正确的吗?)
jro*_*rok 12
不会生成默认赋值运算符,Handle因为它的格式不正确.它所做的只是简单地指定成员,而成员显然不允许这样做const.
相反,不要声明它们const.如果它们不打算在赋值运算符之外进行修改,只需将它们放在private部分中,并且不提供允许修改的接口.