나는 포인터 벡터를 가지고 있으며, ostream 연산자에 과부하를 주어 인쇄를 쉽게하려고합니다. 그러나, 나는 함수를 호출 할 수없는 것 같습니다. 여기에 내 코드 : 모든 세트를 통해C++ 오버로드 연산자 << 포인터 벡터로 작업하기
std::vector<Set*> sets;
for (int i = 0; i < sets.size(); i++) {
std::cout << sets[i] << std::endl;
}
std::ostream& operator<<(std::ostream& out, const Set* s) {
//Print set code
}
I 루프와 [I]를 ostream에에, 아직 함수가 호출되지 세트를 넣어 인쇄를위한 특정 세트를 호출합니다. 그것은 단지 세트 [i]의 주소를 출력합니다. Set의 벡터를 가지고있을 때이 작업을했지만, Set *의 벡터로 변경하려고 시도했을 때 작동하지 못했습니다. 내가 어디로 잘못 가고 있니?
'설정'이란 무엇입니까? 어떻게 선언됩니까? 표시된 코드에서'set'은'Set *'의 벡터이므로,'set'의 i 번째 요소를 인쇄하면 분명히 주소를 출력 할 것입니다. 데이터 구조/컨테이너'Set'의 요소가 필요하면'->'를 사용하십시오. – P0W
sets는 Set 포인터의 벡터입니다. 여기에는 ** 포인터 **가 포함되어 있습니다. 포인터는 주소입니다. std :: cout 명령을 사용하면 논리적으로 주소를 인쇄합니다. 이것은 당신의 코드가 묻는 것입니다. 이것이 당신이 논리적으로 얻는 것입니다. 그 밖의 무엇을하고 싶습니까? –
내 의도는 set [i]가 오버로드 된 연산자 << 기능을 통해 인쇄되도록하려는 것이 었습니다. Set는 기본적으로 연결된 목록 데이터 구조입니다. 나는 그것을 반복하여 오버로드 된 연산자에서 요소를 인쇄하려고했습니다. 나는 (* sets [i])와 함께 세트를 디 레 퍼런 싱 (dereferencing)하려고했으나, 링크 오류가 발생했다. 내 자신의 함수를 작성하면 요소에 액세스하여 sets [i] -> data를 사용하여 인쇄 할 수 있지만 해당 함수가 호출되지 않기 때문에 overloaded << 연산자 내에 해당 코드를 삽입하면 작동하지 않습니다. . – Lucas