错误:传递"常量..."作为"这个"的论点"..."丢弃限定符
error: passing ‘const …'’ as ‘this’ argument of ‘…’ discards qualifiers
我在这里、这里或这里遇到了同样的问题,除了我为参数和函数添加了 const:
#include <unordered_map>
#include <functional>
namespace zzz {
struct identity_t {
static const int ID_SIZE = 5;
static const int LSB = 4; // = ID_SIZE - 1
unsigned char id[ID_SIZE];
inline bool operator< (const identity_t& rhs) const {
for (int i = 0; i < ID_SIZE; i++) if (id[i] != rhs.id[i]) return (id[i] < rhs.id[i]);
return false; // equal
}
unsigned char operator[] (const int& i) {return id[i];}
};
class hash_identity_t {
public:
long operator()(const identity_t& x) const {
return (long) x[identity_t::LSB];
}
};
class equal_to_identity_t {
public:
bool operator()(const identity_t& lhs, const identity_t& rhs) const {
for (int i = 0; i < identity_t::ID_SIZE; i++) if (lhs[i] != rhs[i]) return false;
return true;
}
};
但是我有相同的编译错误:
error: passing 'const zzz::identity_t' as 'this' argument of 'unsigned char zzz::identity_t::operator[](const int&)' discards qualifiers [-fpermissive]
您正在尝试在函数long hash_identity_t::operator( const identity_t& x )
const
中的const
参数上调用非const
函数(identity_t::operator[]
)。
使identity_t::operator[]
恒定。
//--------------------------------------vvvvv
unsigned char operator[] (const int& i) const {return id[i];}
使用at()
std::map的方法。
const mapped_type & at (const key_type &__k) const
相关文章:
- 为什么static_assert错误:即使我传递常量"expression must have a constant value"?
- 如何在函数中传递常量变量?
- 为什么我们需要传递常量共享指针作为引用?
- 如何在C++中通过命令行参数传递常量 int
- 英特尔 TBB,parallel_pipeline,当我在阶段之间传递常量字符*时出错
- 为什么要在具有多个参数的重载运算符+中传递常量引用
- 传递常量指针
- 在 Argv 主参数中传递常量字符
- 传递常量引用与创建临时常量副本相同,那么为什么要传递常量引用
- 错误:传递"常量..."作为"这个"的论点"..."丢弃限定符
- 在C++中,通过引用传递常量布尔值是不是不好的
- 如何传递常量对象
- 为什么不总是在C++中传递常量引用
- 从对象成员传递常量引用.IE someObject.function()
- 如何在参数非常量中传递常量指针
- 错误:传递"常量..."作为"这个"的论点"..."丢弃限定符
- C++:传递常量引用的常量指针时出错
- 传递常量副本
- 正在传递常量指针..我需要做吗
- 传递常量将通过引用自动传递