C++ - 구조체 멤버 접근을 배열처럼 접근하고 싶은 경우
일반적으로 구조체 멤버에 접근하는 예
struct Point {
int x;
int y;
int z;
}
int main(void){
Point p;
p.x = 100;
p.y = 200;
p.z = 300;
cout << "p = (" << p.x << ", " << p.y << ", " << p.z << ")\n";
}
구조체 멤버 접근을 배열 인덱스로
struct Point {
int x;
int y;
int z;
// x의 주소를 기준으로 한 인덱스 위치 참조를 반환한다
int& operator[] (int index) { return *(&x + index); }
};
int main(void){
Point p;
p.x = 100;
p.y = 200;
p.z = 300;
cout << "p = (" << p.x << ", " << p.y << ", " << p.z << ")\n";
p[0] = 10;
p[1] = 20;
p[2] = 30;
cout << "p = (" << p[0] << ", " << p[1] << ", " << p[2] << ")\n";
}
오퍼레이터를 추가하는 것이 귀찮거나 or 외부 라이브러리라서 할 수 없는 경우에는 아래와 같이 할 수도 있다.
int main(void){
Point p;
int* p2 = &p.x;
p2[0] = 10;
p2[1] = 20;
p2[2] = 30;
cout << "p = (" << p.x << ", " << p.y << ", " << p.z << ")\n";
}
이 글은 2020-09-04에 작성되었습니다.