• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

c++ - 返回对特定大小数组的引用,而不明确说明返回类型中的大小

[复制链接]
菜鸟教程小白 发表于 2022-8-3 00:50:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有以下功能:

... getX()
{
    static int x[] = {1, 2, 3};
    return x;
}

我希望它的返回类型为 int(&)[3]但不要明确指定大小 (3)。

我怎么做?

(请不要问我为什么要那样。)

UPD

好吧,我需要将结果传递给采用 int(&x)[N] 的模板函数作为参数(并且我不想将大小显式传递给该模板函数),所以我不知道返回一对的解决方案如何工作......



Best Answer-推荐答案


在 C++14 中:

auto& getX()
{
    static int x[] = {1, 2, 3};
    return x;
}

另外,考虑使用 std::array 而不是 C 风格的数组。

我目前想不出任何符合标准的 C++11 解决方案。这是使用复合文字的一种,假设您的目标是不重复元素并推导出对数组的引用:
#include <type_traits>

#define ITEMS 1, 2, 3
auto getX() -> decltype((int[]){ITEMS})
{
    static int x[] = {ITEMS};
    return x;
}
#undef ITEMS

int main()
{
    static_assert(std::is_same<decltype(getX()), int(&)[3]>{});
}

关于c++ - 返回对特定大小数组的引用,而不明确说明返回类型中的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46222699/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap