gpt4 book ai didi

C++ struct - 作为此参数传递 const 会丢弃限定符

转载 作者:太空狗 更新时间:2023-10-29 20:43:07 24 4
gpt4 key购买 nike

所以,我正在尝试制作一个结构 TileSet并覆盖 <运算符,然后输入 TileSet在优先队列中。我读到我不能在 const 引用上调用非常量方法,但实际上应该没有问题,我只是访问成员,而不是更改它们:

    struct TileSet
{

// ... other struct stuff, the only stuff that matters

TileSet(const TileSet& copy)
{
this->gid = copy.gid;
this->spacing = copy.spacing;
this->width = copy.width;
this->height = copy.height;
this->texture = copy.texture;
}

bool operator<(const TileSet &b)
{
return this->gid < b.gid;
}
};

错误消息告诉我:正在传递 'const TileSet' as 'this' argument of 'bool TileSet::operator<(const TileSet&)' discards qualifiers [-fpermissive]这是什么意思?将变量更改为 const 无效,无论如何我都需要它们是非常量。

当我尝试做时出现错误:

std::priority_queue<be::Object::TileSet> tileset_queue;

最佳答案

您需要添加一个 const operator< 定义的限定符方法:

bool operator<(const TileSet &b) const
// ^^^ add me
{
return this->gid < b.gid;
}

这告诉编译器 this传递给函数的参数是 const,否则它不允许您将 const 引用作为 this 传递。参数。

关于C++ struct - 作为此参数传递 const 会丢弃限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com