错误:将 Const 对象作为“this”参数传递
在给定的 C 代码中,您在尝试访问 getId 时遇到错误() 和 getName() 存储在 a 中的对象的成员函数std::set:
<br>错误:将 'const StudentT' 作为 'int StudentT::getId()' 的 'this' 参数传递会丢弃限定符<br>错误:传递 'const StudentT' 作为 'std::string StudentT::getName()' 的 'this' 参数丢弃限定符<br>
此错误源于 std::set 中的对象存储为 const StudentT 实例。当您对这些 const 对象调用 getId() 和 getName() 函数时,编译器会检测到问题。
在 C 中,不允许非常量成员函数修改 const 对象。 getId() 和 getName() 是非常量函数,可能会修改调用它们的对象。但是,由于集合中的对象是 const,因此任何通过这些成员函数修改它们的尝试都会出错。
解决方案是将 getId() 和 getName() 函数也设置为 const:
int getId() const { return id; } string getName() const { return name; }
通过将这些函数设置为 const,您表明它们不会修改它们所调用的对象,并且编译器将允许它们在 const 上使用
此外,建议实现运算符
inline bool operator< (const StudentT & s1, const StudentT & s2) { return s1.getId() < s2.getId(); }
以上是为什么 `getId()` 和 `getName()` 在 C 中导致'将 'const' 对象作为 'this' 参数传递”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!