gpt4 book ai didi

c++ - 指针指向 vector ,但不指向 valarray?

转载 作者:太空狗 更新时间:2023-10-29 23:37:35 25 4
gpt4 key购买 nike

我正在尝试提取一个 const 指针,指向数组的一部分。我发现它在使用 vector 时工作正常,但在使用 valarray 时无法编译(VS 2008)。谁能解释一下问题出在哪里?

struct vector_test
{
std::vector<int> v;

const int *pointy(const int i) const
{
return &(v[i]); // Ok
}
};

struct valarray_test
{
std::valarray<int> v;

const int *pointy(const int i) const
{
return &(v[i]); // error C2102: '&' requires l-value
}
};

最佳答案

std::valarray<T>::operator [](std::size_t)返回 T& , 这会很好地工作。

std::valarray<T>::operator [](std::size_t) const返回 T ,这将是一个右值,因此不能使用它的地址。

因为 valarray_test::pointy本身就是const , valarray_test::v被视为 const因此 const过载 operator[]叫做。要么制作valarray_test::v mutable或制作valarray_test::pointyconst .

关于c++ - 指针指向 vector ,但不指向 valarray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066273/

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