どこが間違えているか分かりません。
visual c++ 2010
エラー文は
1>------ ビルド開始: プロジェクト: report12, 構成: Debug Win32 ------
1> report12.cpp
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(36): error C2955: 'Node' : クラス テンプレート を使用するには テンプレート 引数リストが必要です
1> c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(4) : 'Node' の宣言を確認してください。
1> c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(35): クラス テンプレート のメンバー関数 'Node<T> LinkedList<T>::insert_first(T)' のコンパイル中
1> with
1> [
1> T=int
1> ]
1> c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(81) : コンパイルされたクラスの テンプレート のインスタンス化 'LinkedList<T>' の参照を確認してください
1> with
1> [
1> T=int
1> ]
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(36): error C2514: 'Node' : クラスにコンストラクターが定義されていません。
1> c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(4) : 'Node' の宣言を確認してください。
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(37): error C2440: '初期化中' : 'Node<T> ' から 'Node ' に変換できません。
1> with
1> [
1> T=int
1> ]
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(38): error C2662: 'Node<T>::setPrev' : 'Node' から 'Node<T> &' へ 'this' ポインターを変換できません。
1> 理由: 'Node' から 'Node<T>' へは変換できません。
1> 変換には 2 番目のユーザー定義変換演算子またはコンストラクターが必要です。
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(39): error C2662: 'Node<T>::setNext' : 'Node' から 'Node<T> &' へ 'this' ポインターを変換できません。
1> 理由: 'Node' から 'Node<T>' へは変換できません。
1> 変換には 2 番目のユーザー定義変換演算子またはコンストラクターが必要です。
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(40): error C2662: 'Node<T>::setPrev' : 'Node' から 'Node<T> &' へ 'this' ポインターを変換できません。
1> 理由: 'Node' から 'Node<T>' へは変換できません。
1> 変換には 2 番目のユーザー定義変換演算子またはコンストラクターが必要です。
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(41): error C2664: 'Node<T>::setNext' : 1 番目の引数を 'Node ' から 'Node<T> ' に変換できません。(新しい機能 ; ヘルプを参照)
1> with
1> [
1> T=int
1> ]
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>c:\users\user\documents\visual studio 2010\projects\report12\report12\report12.cpp(42): error C2440: 'return' : 'Node ' から 'Node<T> ' に変換できません。
1> with
1> [
1> T=int
1> ]
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
本文は- リスト
#include<iostream>
using namespace std;
template <class T>
class Node{
private:
int data;
Node<T> next;
public:
Node(T x);
void setData(T x);
void setNext(Node x);
void setPrev(Node x);//
Node getNext();
Node getPrev();//
T getData();
};
template <class T>
class LinkedList{
private:
Node<T> head;
Node<T> tail;
public:
LinkedList();//コンストラクタ
~LinkedList();//デストラクタ
Node<T>* append(T x);
Node<T>* insert(Node<T>* node,T x){
Node* p=new Node(x);
Node* tmp=node->getNext();
p->setNext(tmp);
p->setPrev(node);
node->setNext(p);
tmp->setPrev(p);
return p;
}
Node<T>* insert_first(T x){
Node* p=new Node(x);
Node* tmp=head->getNext();
p->setPrev(head);
p->setNext(tmp);
tmp->setPrev(p);
head->setNext(p);
return p;
}
Node<T>* insert_last(T x){
Node* p=new Node(x);
Node* tmp=tail->getPrev();
p->setNext(tail);
p->setPrev(tmp);
tmp->setNext(p);
head->setPrev(p);
return p;
}
Node<T>* getFirst(){
Node* p=head;
p->setNext(head);
return p;
}
Node<T>* getLast(){
Node* p=head;
p->setPrev(tail);
return p;
}
bool isFirst(Node<T>* node){
if(head->getNext()==tail){
return true;
}
else{
return false;
}
}
bool isLast(Node<T>* node){
if(tail->getPrev()==head){
return true;
}
else{
return false;
}
}
};
int main(){
LinkedList<int> l;
l.insert_first(10);
l.insert_first(20);
l.insert_first(30);
cout << "最初から表示" << endl;
Node<int>* p=l.getFirst();
while(!l.isLast(p)){
cout << p->getData() << endl;
p=p->getNext();
}
l.insert_last(100);
l.insert_last(200);
l.insert_last(300);
cout << "最後から表示" << endl;
p=l.getLast();
while(!l.isFirst(p)){
cout << p->getData() << endl;
p=p->getPrev();
}
return 0;
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。