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

なぜこのエラーを引っ張っているのか分かりますか? 最も奇妙なのは、これが本「Data Structures with C++ using STL」コードであり、関数を単純に実装するため、この部分は正しいはずであると述べていることです。

最も基本的な関数を実装しようとすると、「クラスまたは名前空間が必要です」というエラーが表示されます。

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 に答える