我在某处读到过这个:
const std::vector<const Target*>& getTargets() const {
return *reinterpret_cast<const std::vector<const Target *> *>(&targets);
}
哪里
std::vector<Target*> targets;
是对象的私有成员。
这是好的做法吗?
以上似乎符合预期。
不,这不是一个好的做法。
使用
std::span
或类似工具。 span
是对一系列连续值的非拥有引用。
std::span<Target const*const> getTargets() const {
return targets;
}
span 是指向 const 对象的指针的不可变范围的非常量视图。 顶层缺少
const
并没有太大影响,就好像他们修改它一样,他们只是改变了 where 他们正在寻找,而不是正在寻找的东西。