세 개의 파일이 있는데 컴파일하고 실행하려고하지만 오류 및 경고가 계속 나타납니다. 구조체 노드 < T> 재정의. 템플릿에 대해 많이 알지는 못하지만이 템플릿은 나에게 적합합니다. 그리고, 무엇이 잘못되었는지 알아 내려고 많은 시간을 보냈습니다. 감사. 당신이 명부에서 한템플릿에 문제가 있습니다.
//mystack.h
#ifndef MYSTACK_H
#define MYSTACK_H
template <class T>
struct Node
{
T info;
T *next;
};
template <class T>
class MyStack
{
private:
struct Node<T> *top;
public:
void Push(T item);
void Pop();
int Top();
void Print();
};
#endif
//mystack.cpp
#include <iostream>
#include "mystack.h"
template <class T>
struct Node
{
T info;
T* next;
};
template <class T>
class MyStack
{
private:
struct Node<T>* top;
public:
void Push(T item)
{
if(top == NULL)
{
top = new(struct Node<T>);
top->info = item;
top->next = NULL;
} else
{
Node<T>* temp;
temp = top;
top = new(struct Node<T>);
top->info = item;
top->next = temp;
}
}
void Pop()
{
if(top == NULL)
{
} else
{
Node<T>* temp;
temp = top->next;
delete top;
top = temp;
}
}
int Top()
{
return top;
}
void Print()
{
if(top != NULL)
{
Node<T>* temp;
temp = top;
while(temp != NULL)
{
std::cout << temp << std::endl;
temp = temp->next;
}
}
}
};
두 파일 모두에서 구조체를 정의 할 필요가 없습니까? 수업은 어떻습니까? –
모든 포함 된 파일에 한 번만 유형 정의를 사용할 수 있습니다. 클래스 및 다른 유형 정의 코드뿐만 아니라 구조체도 고려합니다. – fyr