我目前正在为类(class)做作业,它涉及创建一个模板类。我已经设置了模板类和所有内容,但我遇到了似乎无法修复的错误。我已经尝试了各种解决方案,但到目前为止都没有奏效,我也进行了大量的研究,但没有找到与我的情况完全相关的问题的答案,尽管许多其他人已经问过这个问题。
这是到目前为止的代码...
#ifndef STACK_H
#define STACK_H
#include "Queue.h"
#include "MyException.h"
#include <iostream>
using namespace std;
template<class T>
class Stack;
template<class T>
ostream& operator<<(ostream&,Stack<T>&);
template<class T>
class Stack
{
public:
Stack();
Stack(const Stack<T>& other);
void push(const T& el);
T pop();
T peek();
bool isEmpty();
friend ostream& operator<< <T>(ostream&,Stack<T>&);
Stack<T>& operator=(const Stack<T>& other);~Stack();
private:
class Node
{
public:
Node(const T& data, Node* n = 0)
{
element = data;
next = n;
}
T element;
Node* next;
};
Node* top;
};
#include "Stack.cpp"
#endif
那就是“Stack.h”然后就是
template<class T>
Stack<T>::Stack()
{
}
template <class T>
Stack<T>::Stack(const Stack<T>& other)
{
}
template <class T>
void Stack<T>::push(const T& el)
{
}
template <class T>
T Stack<T>::pop()
{
}
template <class T>
T Stack<T>::peek()
{
}
template <class T>
bool Stack<T>::isEmpty()
{
return false;
}
那是“Stack.cpp”。 我知道在不同文件中的实现不是普遍接受的方法,但不幸的是,这就是代码需要的地方。现在,当我在没有任何实际代码的情况下运行它时,可以这么说,我得到以下错误。
3: expected constructor, destructor, or type conversion before '<' token
3: expected ';' before '<' token
9: expected constructor, destructor, or type conversion before '<' token
9: expected ';' before '<' token
17: expected init-declarator before '<' token
17: expected ';' before '<' token
23: expected init-declatator before '<' token
23: expected ';' before '<' token
对于第 35 行的每个函数,它都是这样进行的。
现在,它会不会是我的编译器?难道我还没有完成所有的功能,还没有返回什么东西吗?
非常感谢任何帮助,谢谢。
最佳答案
不要在单独的翻译单元中编译 Stack.cpp;它已经包含在 Stack.h 中。
clang++ -c Stack.h -std=c++11
工作得很好。
关于c++ - 我收到有关我的模板类的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21609361/