inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

람다 (lambda)

그래서 결국 클래스 내부의 _hp는 따로 캡처를 못하는건가요?

302

사빈

작성한 질문수 6

0

영상 마지막에 this를 캡처하게되면 어떻게되는지 잘 이해를 했습니다.

 

근데 결국 클래스내부에서 _hp만 캡처하여 사용하는방법은 없는건가요?

 

 

C++

답변 1

0

Rookiss

_hp만 캡쳐해서 '사용'한다는게 값을 읽기만 하는 상황이라면 상관없지만

값을 write해서 덮어 써야하는 경우라면 당연히 문제가 됩니다.
애당초 _hp라는 것이 현재 Knight 객체에 의존적이고,
Knight 객체가 메모리에서 해제되었다면,
당연히 건드려서는 안되는 메모리를 참조한 것이 되기 때문이죠.
기본적으로 람다랑 포인터는 궁합이 매우 안 좋습니다.
정말 정말 _hp를 다른 값으로 write해야 하는 경우라면,
스마트 포인터까지 이용해서 스마트 포인터의 캡처값을 람다 안으로 넘겨서
객체가 절대 소멸되지 않게 유지를 시켜줘야 합니다.

0

사빈

아 자세한 답변 감사합니다!

이렇게까지 자세히 해주실줄 몰랐는데 .. ㄷㄷ

 

아 사용한다는 뜻은 []안에 _hp를 쓰는건 왜 문법적으로 틀리냐 였습니다

제가 질문을 좀 성의없이 한것같네요 ㅠ

 

캡처 범위 자체가 람다식이 있는 함수 범위 안에 있는 변수만 가능한건가요?

ResetHpJob 함수 밖에 _hp가 있기때문에 []안에 _hp를 넣었을때 오류가 나는건지

 

그리고 read하는건 문제가 발생할 여지가 없어 별로 상관없지만

write를 하는건 말씀하신것처럼 스마트 포인터를 사용하지않으면

ex) hp = 100; 

오류가 나던데 그건 c++에서 발생할 위험때문에 그냥 문법적으로 막아둔건가요?

 

생각지도 못한부분까지 자세히 설명해주셔서 감사합니다!

그덕에 질문만 더 늘어서 죄송하긴하네요 ㅠ

0

Rookiss

_hp를 해도 사실 this->_hp가 생략된 형태고,
this라는 특정 주소 없이는 _hp도 접근이 불가능하니
this 캡처 없이는 _hp 접근도 안 되게 문법적으로 그렇게 되어 있습니다.

0

사빈

아... 그렇군요!

답변감사합니다~

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

559

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

453

1

strcpy() 구현 관련 질문

0

533

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

475

1

클래스 타입의 포인터 질문합니다

0

559

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

503

1

템플릿 특수화 관련 질문

0

389

1

포인터 관련 질문합니다!

0

270

1

Unable to start assembler. Check your settings.

0

848

2

cpu선택

0

548

1

포인터 질문이 있습니다

0

331

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

589

1

iterator 삭제관련

0

415

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

316

1

15 분 45초 대 질문

0

317

0

스택 프레임 질문합니다!

2

312

1

오른값 참조 in 게임

0

391

0

동적할당 질문이 있습니다

0

457

1

안녕하세요 메모리에 대해 질문드립니다.

0

312

1

함수객체 의 매개변수

0

365

1

복사생성자

0

439

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

430

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

359

1

스택 오버플로우

2

801

1