1
二重リンクリストを実装しています。二重リンクリスト用のクラス内にtypedefステートメントを配置するとC++エラーが発生する
私のクラスには3つのtypedefステートメントがあります。
コンパイル時に「 'reference'が型名を指定していません」というエラーが発生します。私がinclude文の下でそれらを移動すると、このエラーは消えますが、新しいものが発生します。例えば、 'Node'が私の主なスコープで宣言されていないなどです。私のプログラムが正しく機能するためには、これらのtypedefステートメントのそれぞれがどこに行く必要があるのか分かりません。私はデフォルトコンストラクタも含めました。
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
class linkedlist
{
public:
typedef int element_type;
typedef element_type& reference;
typedef const element_type& const_reference;
linkedlist();
~linkedlist();
bool empty() const;
void clear();
reference back();
const_reference back() const;
reference front();
const_reference front() const;
linkedlist& operator=(const linkedlist& l);
void pop_back();
void pop_front();
void push_back(const element_type& x);
void push_front(const element_type& x);
void sort();
explicit linkedlist(unsigned int n);
void check() const;
void rcheck() const;
private:
struct Node
{
element_type elem;
Node* next;
Node* prev;
};
Node* head;
Node* tail;
int size;
};
linkedlist::linkedlist()
{
head = new Node;
tail = new Node;
head->next = tail;
head->prev = NULL;
tail->next = NULL;
tail->prev = head;
size = 0;
}
...
[できません](http://coliru.stacked-crooked.com/a/03bb01431652abbe) – cpplearner
どのコンパイラを使用していますか? –
なぜこれをC++で行うのですか? Cでは、問題ないですが、C++では 'list'を持っています! C++でtypedefを使う理由なぜテンプレートを使用しないのですか?どうしてあなたは 'nullptr'ではなくNULLを使うのですか?なぜコンストラクタでinitリストを使用しないのですか? – Stargateur