在下面的代码中,const
一个对象的非方法调用const
相同对象的一个方法,该方法返回一个const
指向对象字段的指针,然后这个返回的指针被强制转换为一个非const
版本——这是一种类似于这个答案:优雅的解决方案来复制,const 和 non-const,getter?[重复]。但是,由于我将指针放入复杂的数据结构中,我不确定它是否真的有效。会吗?
class Struct {
private:
Field f, g;
std::map<std::string, const FieldBase*> const_fields_t;
std::map<std::string, FieldBase*> fields_t;
public:
const_fields_t get_fields() const {
return const_fields_t { { "f", &f }, { "g", &g } };
}
fields_t get_fields() {
const Foo* = this;
fields_t result;
foreach(auto& v : const_this->get_fields()) {
result[v->first] = const_cast<FieldBase*>(v->second);
}
return result;
}
};