2

在“dualstk.h”中

#ifndef __32_dualstk_h
#define __32_dualstk_h

#include <deque>
#include <cstdlib>
#include <iostream>

using namespace std;

enum stackNumber {One, Two};

template <class T>

class DualStack{
public:
    DualStack() {count1 = 0; count2 = 0;};
        //constructor. set counts to 0

    void push(const T& item, stackNumber n);
    void pop(stackNumber n);

    T& top(stackNumber n);
    const T& top(stackNumber n) const;

    bool empty(stackNumber n) const;
    int size(stackNumber n) const;

private:
    deque<T> dualstackElements;
    int count1, count2;

};

//error here
void DualStack::pop(stackNumber n){

}

#endif

知道为什么我要拉这个错误吗?最奇怪的是,这是“使用 STL 使用 C++ 的数据结构”一书的代码,它指出这部分应该是正确的,因为我们只是为了实现这些功能。

当我去实现一个最基本的功能时,我得到了错误:“期望一个类或命名空间。”

4

2 回答 2

8

DualStack是一个模板,因此您需要在函数实现中使用模板语法。

template <class T>
void DualStack<T>::pop(stackNumber n){

}
于 2013-10-08T01:35:16.343 回答
0

为您的函数实现创建一个单独的文件并包含您的头文件

#include "dualstk.h"

void DualStack::pop(stackNumber n){

}
于 2013-10-08T01:27:27.057 回答