먼저 링크 된 목록의 복사본 생성자를 만드는 것이 어려웠습니다. 나는 거의 무언가로 머리를 치고 싶었지만 Stack Overflow 친구들을 생각했다. 그래서 여기에 문제가있다 : 한 가지 고려 사항 list.h 또는 stack.h 또는 그 생성자를 변경할 수 없다. list.h링크 된 목록을 사용하여 스택의 생성자 복사
template <class T>
struct ListItem
{
T value;
ListItem<T> *next;
ListItem<T> *prev;
ListItem(T theVal)
{
this->value = theVal;
this->next = NULL;
this->prev = NULL;
}
};
/* This is the generic List class */
template <class T>
class List
{
ListItem<T> *head;
public:
// Constructor
List();
// Copy Constructor
List(const List<T>& otherList);
}
// In list.cpp
template <class T>
List<T>::List()
{
head=NULL;
}
template <class T>
List<T>::List(const List<T>& otherList)
{
// I have code working for this part
}
template <class T>
List<T>::~List()
{
}
// In stack.h (includes list.cpp)
template <class T>
class Stack
{
List<T> list;
public:
Stack();
Stack(const Stack<T>& otherStack);
~Stack();
void push(T item);
T top();
T pop();
};
// remember top(); pop(); push() functions are working properly in stack.cpp file.
// In stack.cpp (includes stack.h)
Stack(const Stack<T>& otherStack){
}
template <class T>
void Stack<T>::push(T item)
{
}
template <class T>
T Stack<T>::top()
{
}
template <class T>
T Stack<T>::pop()
{
}
에서 // 0 위에 인 (100) (100)로부터 오브젝트의 함유 ELEM있다.
Stack<int> s2(s);
나는 지구에 otherStack 요소에 액세스하는 방법을 모른다 -이 : 이제 우리는 다음과 같이 복사합니다. 나는 물론 그것의 연결된 목록을 의미합니다. 하지만 그것은 Stack.cpp에 있습니다. 어떻게 접근 할 수 있습니까? 또한이 스택을위한 복사 생성자를 만드는 법도 있습니다 (Working 코드가 더 좋을 것입니다). 이번에는지지 해주십시오. 감사. 참고 : 생성자는 변경할 수 없습니다. 그것이 그 길이어야합니다. 이번에는 모든 시체가 내 질문을 받기를 바랍니다.
'List'의 복사 구조가 올바르게 작동하면, 암시 적으로 생성 된 복사 생성자가'stack'에 대해 정상적으로 작동해야합니다.'List' 만 포함합니다.이리스트는'List (List const &)'. –
@JerryCoffin 다음과 같은 의미입니다 : - list.List Stack (otherStack) //이 기능이 작동하지 않습니다. 오류 : -> 기능의 부적절한 사용. –
CerebralGarcon
아니요. 그는 스택 복사 생성자 선언 및 구현을 삭제 한 다음 다른 객체처럼 스택을 다른 스택으로 복사하는 것을 의미합니다. –