gpt4 book ai didi

c++ - C++ 函数可以返回一个指向已知长度数组的指针吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:16 25 4
gpt4 key购买 nike

我有一个包含 const charstatic constexpr 数组的类,我想通过 c_str() 方法:

class my_class {
private:
static constexpr const char c_str_[6] = {'c', 'h', 'a', 'r', 's', '\0'};
public:
static constexpr const char* c_str() {
return c_str_;
}
};

这有效,但有一个不幸的影响:它从类型中删除指向数组的长度:

decltype(my_class::c_str()) // equivalent to const char*

我真正想要的是实现这一目标的某种方式:

decltype(my_class::c_str()) // equivalent to const char[6]

我知道在任何一种情况下返回的对象都是一个指针;我只想保留类型中指向数组的长度。有点像 decltype("string literal")const char[15],而不是 const char*

有办法吗?

最佳答案

你的意思是返回对 c_str_ 的引用?

static constexpr decltype(c_str_)& c_str() { return c_str_; }

static constexpr auto& c_str() { return c_str_; }

如果你想要一个指针,只需将 & 换成 * 并返回 &c_str_

如果要显式引用类型,请使用别名:

using T = const char[6];
static constexpr T& c_str() { return c_str_; }

或者如果你真的讨厌自己:

static constexpr const char (&c_str())[6] { return c_str_; }

请注意,您不能让函数按值返回原始数组。

关于c++ - C++ 函数可以返回一个指向已知长度数组的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54283334/

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