키/값 쌍으로 작동하는 템플릿 기반 링크 된 목록을 구현하는 여정에서 "popHead()
"메소드를 구현하고 싶습니다. 그러나 컴파일 할 수는 없습니다.typename 값을 가진 튜플을 반환하는 C++ 템플릿
/**
* Removes the first element in the list and returns it.
* @return first element, nullptr if list is empty
*/
std::tuple<K, V> popHead() {
auto tmp = head;
if (tmp) {
if (tmp->next) {
head = tmp->next;
} else {
head = nullptr;
}
return new std::tuple(tmp->key, tmp->value);
}
return nullptr;
};
유형 지정이 필요하기 때문에 작동하지 않습니다. 좋아, 그래서하지만 ..이 중 하나가 작동하지 않는 형태의 종류가 있어야 튜플에 포함 된 값 .. 모르는 :
return new std::tuple<K, V>(tmp->key, tmp->value);
어떻게 유형 <K, V>
와 튜플을 반환합니까?
Nitpick 수정해야합니다 :'경우 (tmp-> 다음)를 ...'단지가 될 수'머리 = tmp-> next;', 당신은 그것을 역 참조하지 않습니다 – Caleth
이 질문은 혼란 스럽습니다. 프로토 타입은 분명히 객체를 리턴하지만, 당신은'nullptr'과 두 포인터 인'new'의 결과를 리턴하려고합니다. 'popHead'는 멤버 메소드인가요? 수업은 어떻게 생겼습니까? 템플릿 기반이란 무엇을 의미합니까? 이것은 템플릿 메타 프로그래밍 유형입니까? 포인터와 템플릿 메타 프로그래밍이 항상 잘 섞이는 것은 아닙니다. –