c++ - 我收到有关我的模板类的错误

标签 c++ templates

我目前正在为类(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/

相关文章:

C++ 字符串类型独立算法

c++ - 从值数组创建直方图/绘图

c++ - 哪些 C++ 编译器会自动定义 size_t 而无需包含 header ?

c++ - Linux 3.14 关闭过早退出程序的文件句柄时的策略

c++ - 如何使用 Qt 阻止 tcp 套接字?

java - Groovy GString 变量双重替换

php - 在模板中延迟加载变量

c++ - Visual Studio 2010 的模板问题

c++ - map 和无序 map 有什么区别?

php - 在 PHP 中使用 SwiftMailer 并通过预构建的电子邮件模板更改值