friend 키워드에서 :: (스코프) 접근 가능할까요?
글쓴이: gag2012 / 작성시간: 월, 2018/05/21 - 8:49오후
class Node { private: friend class NodeList; }; class NodeList { private: void func(); }; void NodeList::func() { Node* header; NodeList::Node* trailer; }
안녕하세요.
위와 같이 코드를 작성 시에
Node* header;
는 잘되지만
NodeList::Node* trailer;
와 같이 스코프지정자로 접근이 안됩니다.
만약 위와 같은 접근을 위해서는
NodeList가 Node를 상속받아야만 가능할까요?
friend 키워드는 private혹은 protected 접근지정자에 접근할 수 있도록 해주는 키워드라고 배웠습니다.
그래서 위와 같은 코드는 Node를 NodeList에서만 쓰겠다는 뭔가 소유개념 이라고 알고 있습니다.
:: 와 같은 접근은 안되는 걸까요?
Forums:
friend 는 아래와 같은 방식으로 사용합니다.
friend 는 아래와 같은 방식으로 사용합니다. friend 선언의 의미를 잘못 이해하고 계신듯 합니다.
올려주신 코드에서 NodeList::Node* trailer; 가 에러를 내는 이유는 단순히 NodeList::Node 라는 타입이 없기 때문입니다.
이런 경우에 A::B 또는 C::D 와 같은 표현이 타입으로서 의미를 갖게 됩니다. friend 와는 아무 관련 없습니다.
답변감사합니다
그럼 상속을 하면 가능하단 말씀이시군요
?? 무슨 말씀이신지? 상속과는 관계없습니다.
?? 무슨 말씀이신지? 상속과는 관계없습니다.
댓글 달기