C++ 如何返回指向对象的不可变(在所有级别)指针向量?

问题描述 投票:0回答:1

我在某处读到过这个:

const std::vector<const Target*>& getTargets() const {
        return *reinterpret_cast<const std::vector<const Target *> *>(&targets);
}

哪里

std::vector<Target*> targets;

是对象的私有成员。

这是好的做法吗?

以上似乎符合预期。

c++
1个回答
0
投票

不,这不是一个好的做法。

使用

std::span
或类似工具。
span
是对一系列连续值的非拥有引用。

std::span<Target const*const> getTargets() const {
  return targets;
}

span 是指向 const 对象的指针的不可变范围的非常量视图。 顶层缺少

const
并没有太大影响,就好像他们修改它一样,他们只是改变了 where 他们正在寻找,而不是正在寻找的东西。

© www.soinside.com 2019 - 2024. All rights reserved.