2012-04-03 10 views
3

テンプレートを使用してイメージ内に領域のソートされたリストを作成しようとしています。ここで定義されているクラスは、同じファイルにさらに実装されています。テンプレート内のテンプレートオブジェクト(C++)

template <typename RegionType> 
class SortedType 
{ 
    public: 
     SortedType(); 
     ~SortedType(); 
     void makeEmpty(); 
     bool isFull() const; 
     int lengthIs() const; 
     void retrieveItem(RegionType&, bool&); 
     void insertItem(RegionType ); 
     void deleteItem(RegionType ); 
     void resetList(); 
     bool isLastItem() const; 
     void getNextItem(RegionType&); 

    private: 
     int length; 
     NodeType<RegionType> *listData; 
     NodeType<RegionType> *currentPos; 
}; 

ノード構造体の定義は次のとおりです。

template <typename DataType> 
struct NodeType 
{ 
    DataType info; 
    NodeType<DataType> *next; 
}; 

私はコードをコンパイルしようとすると、私はエラーを取得する:エラー:SortedTypeは、私が使用する機能のプロトタイプライン上のタイプではありませんSortedTypeクラス私はそれがSortedTypeクラスのために使用しているテンプレートと関係があり、NodeTypeクラスは何らかの問題を引き起こしていると思いますが、それを修正する方法がわかりません。最初のエラーが表示されていることに

編集 試作した機能は次のとおりです。

int computeComponents(ImageType &, ImageType &, SortedType &); 

私はSortedTypeクラスを使用するすべての関数のプロトタイプにエラーがあります。 NodeTypeはSortedTypeの前に宣言されます。

+2

でなければなりませんが、あなたがSortedTypeクラスを使用する関数をプロトタイプラインを表示します。またはエラーが –

+0

に対応する行は、NodeTypeがSortedTypeより前に宣言されているように見えます – Anycorn

答えて

2
int computeComponents(ImageType &, ImageType &, SortedType &); 

template <typename RegionType> 
int computeComponents(ImageType &, ImageType &, SortedType<RegionType> &); 
+0

関数の実装にテンプレート指定を追加する必要がありましたが、一度実行するとコンパイルされました。どうもありがとうございます! – Wenadin

関連する問題