• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

이중 포인터 질문

21.07.10 14:44 작성 조회수 138

0

이중포인터 변수에게 개체멤버가 지닌 포인터 변수의 주소를 넘기려하는데 오류가 나서 질문드립니다.
포인터변수인 멤버변수가 private으로 닫아놓고 GetAddress.
예로들어
private Node* address - 멤버변수
public Node* GetAddress() { return address } -멤버함수
-  방식입니다.
이것을
Node* node = ~~
Node** dbAddress = &(node->GetAddress());
라는 코드를 작성하면

오류코드 : error C2102: '&'에 l-value가 있어야 합니다. 그리고 식은 lvalue 또는 함수지정자가 있어야합니다. 라고뜨는데 포인터변수의 주소를 넘기는건데 이게 왜 오류가나는지 궁금합니다

답변 2

·

답변을 작성해보세요.

1

해당 부분은 강의 후반에 나오는 왼값/오른값(lvalue vs rvalue)를 알아야 해서,
일단은 넘어가시길 바랍니다.
짧게 요약하자면 오른값은 int a = 3; 와 같은 식에서
오른쪽에 오는 ( = 3) 애들을 말하는데
오른값에는 &3와 같은 문법을 허용하지 않습니다.

0

DWG담님의 프로필

DWG담

질문자

2021.07.10

음 멤버 포인터 변수를 반환하는데도 rvalue인가요?

Node** dbAddress = &(node->GetAddress()); 가

Node** dbAddress = &(address);의 형태가 안된다는걸까요?

단순하게 멤버를 private이 아닌 public으로해 직접적으로 접근하면 오류가 나질 않아서 헷갈리네요..

node->GetAddress() = new Node(); 가 통과되지 않고
Node* node = node->GetAddress(); 는 통과되니,
GetAddress()의 반환은 오른값이라는 것을 알 수 있습니다.