我有一个结构:

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) {}
};

但是当我尝试将其分配给变量时



为什么呢(我使用结构是因为据我所知,它们被当作数据类型处理,并且可以从函数中返回而无需使用new进行创建。对吗?)

最佳答案

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

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

关于c++ - 结构不能分配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21864194/

10-10 23:19
查看更多