인프런 커뮤니티 질문&답변

초보언리얼님의 프로필 이미지

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

vector #4

강의 29분 45~50초 부분

21.03.24 01:32 작성

·

318

1

typedef를 사용해서 Iterator<T> iterator를 선언하는 부분에서 제대로 이해하기 어려운것 같아서 질문남깁니다.

typedef를 선언했을때,

main함수의 for문안에서 Vector<int>::iterator 했을때 자동적으로 iterator<T> 타입을 이용한다는 부분이 와닿지 않습니다. 좀더 구체적인 설명 조금 부탁드려도 될까요?

왜 저것을 사용했을때 Vector<int>::iterator 가 문법적으로 문제가 없는지 잘 모르겠습니다.

클래스명::을 사용하는 문법은 어떤 상황에서 사용하는건가요?

std:: 라는것처럼 네임스페이스 부분으로 이해한 경우는 있는데, 클래스명으로 ::으로 했을때는 어떤 경우에서 사용하는지 헷갈리는것 같습니다. 

추가 보충설명 해주시면 정말 감사하겠습니다.

답변 4

3

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 03. 24. 03:16

:: 은 그냥 [~~에 있는 정도]로 해석하시면 됩니다.

vector<int>::iterator는 vector<int> 클래스에 있는 iterator 타입을 사용하겠다,
라는 의미인데 이전에 우리가 typedef Iterator<T> iterator;
를 통해 앞으로 Iterator<T>를 iterator라는 이름으로 부르기로 했습니다.

따라서 마법처럼 Iterator<T> 타입이 되는거죠!
심지어 vector<int>로 정하는 순간
T는 int로 고정되니 Iterator<int>가 될겁니다.

1

저도 이 부분이 이해가 많이 부족했는데 여전히 모르겠습니다!!!

1

JjaengE님의 프로필 이미지

2021. 03. 24. 10:48

저도 이 부분이 이해가 살짝 부족했는데 감사합니다.!!!

0

leyjcalm님의 프로필 이미지

2024. 01. 18. 19:36

루카스님께서 말씀하신
":: 은 그냥 [~~에 있는 정도]로 해석하시면 됩니다"
라는 내용은!
간단하게 생각하면 이전에 클래스 내부에 함수를 선언하고 클래스 외부에 함수를 정의할때를 생각하시면 됩니다.

(Player 클래스 내부)
void function(const int num);


(클래스 외부)
void Player::function (const int num)

{

...
}
"Player 클래스 안에 function이 있다" 라고 해석한 것 처럼

저희가 Vector 클래스에 iterator을 만들었으니
"Vector클래스 안에 iterator이 있다" 라고 해석 하면 되는거죠!