gpt4 book ai didi

c++ - 如何返回对十个字符串数组的引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:22:23 28 4
gpt4 key购买 nike

这是 C++ Primer 5th 的练习。不知道怎么解决?

问题描述为:

为返回十个字符串数组的引用的函数编写声明,不使用尾随返回、decltype 或类型别名。

我的代码:

#include <iostream>
#include <string>

std::string (&func(std::string a[])) [10]
{
return a;
}

int main()
{
std::string a[10];
std::string (&b)[10] = func(a);
for (const auto &c : b)
std::cout << c << std::endl;
return 0;
}

编译错误:

e6_36.cc:6:12: error: non-const lvalue reference to type 'std::string [10]' cannot bind to a value of unrelated type 'std::string *' (aka 'basic_string, allocator > *')

return a;

       ^

1 error generated.

最佳答案

你可以通过引用传递数组,这样你就可以返回它:

std::string (&func(std::string (& a) [10])) [10]
{
return a;
}

或者为了使事情更清楚,对字符串数组使用 typedef:

typedef std::string StrArray[10];

StrArray& func2(StrArray& a) {
return a;
}

编辑:

当你这样做的时候:

std::string (&func(std::string a[])) [10]
{
return a; // error !
}

参数 a 是一个 std::string 数组,并衰减为指向 std::string* 的指针,它被传递按值(因此,已复制):您要求编译器将非常量引用(返回类型)绑定(bind)到临时值,这在 C++ 中是非法的。

关于c++ - 如何返回对十个字符串数组的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131948/

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