std::array<T,N> 需要以另一种类型获取

std::array<T,N> need to be fetched in another types

本文关键字:另一种 类型 获取 lt array std gt      更新时间:2023-10-16

我有一个类,它有一个std::数组作为成员变量,如下所示:

class my_class{
std::array<point<float>,4> corners;
}

我需要将这些corners传递给许多函数。这些函数接受(point<T>* const)。所以,我只是简单地通过corners.data()。问题是当某些函数接受point类的特殊type时。例如,(point<double>* const)。我应该如何在尽可能少的性能开销的情况下将角传递给那个函数。

代码:

class my_class{
public:
std::array<point<float>,4> corners;
}
void first_method(point<float>* const input);
void second_method(point<float>* const input);
int main(){
    my_class foo;
    first_method(foo.corners.data()); // OK  
    second_method(foo.corners.data()); // Problem
}

编辑:

我刚刚意识到这个类与我的问题无关,我们可以将其简化为:

void first_method(point<float>* const input);
void second_method(point<float>* const input);
int main(){
    std::array<point<float>,4> corners;
    first_method(corners.data()); // OK  
    second_method(corners.data()); // Problem
}

你不能。

数组的类型错误,或者函数的参数类型错误。

要么修复数组类型,要么修复函数,要么制作第二个数组。