Я начинаю разбираться с c ++, и я подумал, что смогу научиться создавать векторы и манипулировать ими, и при этом я буду разбираться с указателями и ссылками.Может быть, я смотрю на это слишком долго, но я не совсем уверен, что происходит с разделом кода, связанным с оператором return с книгой, за которой я следую, дал мне, более конкретно return ((&x)[i]);
часть.Перечислено ниже:
float& operator [](int i)
{
return ((&x)[i]);
}
Насколько я понимаю, &
- оператор адреса выдаст вам адрес конкретной переменной.Теперь, если я правильно помню, указатели и массивы идут рука об руку, поэтому, когда вы получаете ссылку на переменную x
, например, (&x)[i]
, вы можете получить доступ к следующему элементу, используя оператор смещения, но я не знал, что вы могли бысделать это со структурами.
Я на правильном пути или потерял его?
Используя следующие ссылки, чтобы помочь мне: http://www.cplusplus.com/doc/tutorial/pointers/ https://en.cppreference.com/w/cpp/language/operator_member_access
struct Vector3D
{
float x, y, z;
Vector3D() = default;
Vector3D(float a, float b, float c)
{
x = a;
y = b;
z = c;
}
float& operator [](int i)
{
return ((&x)[i]);
}
const float& operator [](int i) const
{
return ((&x)[i]);
}
};
int main(int argc, char const *argv[])
{
Vector3D vec = Vector3D(1,2,3);
auto test = vec[1];
std::cout << test << std::endl;
return 0;
}
Я понимаю, что напечатанное здесь значение будет равно 2, но я не совсем получаю ссылку &x
, способную получить доступ к значениям члена структуры?