gpt4 book ai didi

c++ - 返回对常量大小指针数组的引用的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-28 02:40:28 25 4
gpt4 key购买 nike

我有一个像这样声明为类成员的指针数组:

class Bar
{
private:
static constexpr int SIZE = 10;
Foo* m[SIZE];
}

在我的一个类方法中,我想返回一个指向这个数组的指针(或者最好是一个引用)。该数组在编译时具有已知大小,但我会跟踪我放入其中的项目数量(它是一个缓冲区)。

在 C++11 中返回对该数组的引用的最佳方法是什么?

以下是我尝试过的方法:

GetArray(Foo* &f[], unsigned &size) const

我喜欢这种语法,因为它清楚地表明引用值是一个指针数组,但这会导致编译器错误:Declared as array of references of type Foo*

GetArray(Foo** &f, unsigned &size) const
{
f = m;
size = mSize;
}

给我:错误:从不兼容的类型 Foo *const[10] 分配给 Foo **'。将 mFoo 转换为 (Foo**) 可以减轻错误,但恕我直言,这并不优雅。

最佳答案

没有人使用 std::array 发布答案然而,这是一个非常简单的替换:

class Bar
{
std::array<Foo *, 10> m;
public:
std::array<Foo *, 10> & getArray() { return m; }
std::array<Foo *, 10> const & getArray() const { return m; }
};

在我看来,这比使用 C 风格数组版本必须跳过的圈套简单得多。

为避免代码重复,您可以 typedef std::array<Foo *, 10> FooArray; .

同时拥有 const 的技巧和一个非 const实现是返回引用或指针的访问器函数的常见模式。 (当然,如果您的访问器按值返回,则不需要)。

关于c++ - 返回对常量大小指针数组的引用的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com