我有三个文件,我想编译和运行它们,但我不断收到一些错误和警告。重新定义struct Node < 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