질문에 거의 다 나와 있습니다. 빈 STL 컨테이너 (더 정확하게는 std::set
)에 대한 참조를 초기화해야합니다.생성자에서 빈 STL 컨테이너에 대한 참조를 초기화하는 방법은 무엇입니까?
시도에 :
bozo.cc:104: error: invalid initialization of non-const reference of type ‘bozo_set&’ from a temporary of type ‘bozo_set’
(그냥 보조 노트 :
typedef std::set<bozo *> bozo_set;
class BozoClass { public: BozoClass(): bozosetref(bozo_set()) {} }
과 유사한 컴파일러 오류를 얻을 것이다이 하지 내가 나이 나에 대한 typedef
를 사용하지 말아야 여부를 묻는입니다 아니, 나는 그것에 대해 의견을 가지고 있지만, 이것은 실제 질문이 아닙니다.)
EDIT : 이 점에 대해 많은 논평을하고 있는데, 이것에 대한 언급이있는 점은 바깥 클래스가 bozo
요소를이 집합의 요소로 변경하는 것을 허용하는 것입니다. 대신 BozoClass
에 불필요한 메소드가 필요합니다.
무엇에 사용 하시겠습니까? 어쨌든 매달린 참조입니다. 집합에 포인터가 포함되어 있다는 사실 (특히 원시 집합)은 경보도 설정합니다. – chris
'bozosetref'는 임시로 바인드 할 수없는 참조 유형 ('std :: set &')입니다. –
0x499602D2
이것은 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)입니다. 임시 집합에 대한 참조를 취하는 방법을 묻는 중입니다. 집합을 소유하는 클래스를 생성하는 방법을 물어보고 소유 클래스의 클라이언트 집합에 쉽게 액세스 할 수 있어야합니다. –