gpt4 book ai didi

c++ - 如何将数组指针从模板函数转换为数组参数?

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

我想标题很困惑,我会用一些代码来解释我的案例。

template<uint16_t Len>
void add(const int8_t (&i_array)[Len])
{
// Do something
}

class Test
{
public:
int8_t* GetName()
{
return name;
}

private:
int8_t name[10] = "myname";
}

int main()
{
Test mytest;

add(mytest.GetName()); // Compilation error
}

此代码无法编译。生成以下错误:“错误#304:没有函数模板 add 的实例与参数列表匹配”

编译器似乎无法确定 GetName() 返回大小为 10 的数组。对吗?

如何使用数组上的指针调用“add”?

谢谢,尼古拉斯

最佳答案

Test::GetName 返回一个指针,而不是数组。您不能将其结果绑定(bind)到需要数组引用的函数。但是,您可以更改 GetName 的签名以使其返回数组(当然是通过引用):

int8_t (&GetName())[10] { return name; }

或者您可以使用强制转换,但这会破坏类型系统的目的。

关于c++ - 如何将数组指针从模板函数转换为数组参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605839/

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