2016-08-01 5 views
0

に関数定義と一致することができません、と私はば完全テンプレートをnoobのです。私が始めた後、私はいくつかのエラーを受けます。私はそれが何を意味するのかを理解していませんか? テキストはここにありますので、私は何をしなければならないのですか:テンプレート - 私はテンプレートで作業しようとした既存の宣言C++

一連の項目を実装するテンプレートベースのクラスを作成します。クラスは に ユーザーを許可する必要があります。セットに新しいアイテムを追加します。 b。セット内のアイテムの数を取得します。 c。セット内の各項目を含む動的に作成された配列へのポインタを取得します。この関数の呼び出し側 は、メモリの割り当てを解除する責任があります。

エラーは次のとおりです。

項目::出力「:既存の宣言

項目::内に関数定義と一致することができない」:既存の宣言

に関数定義と一致することができません項目

:「のメンバではありません」そして、私のコードはここにある:追加

#include <iostream> 
using namespace std; 

template<class T> 
class Item { 
private: 
    Item(); 
    ~Item(); 
    void Add(T item); 
    int get(); 
    void output(T array); 
    bool in(T item); 
    T *array; 
    int element; 
    int size; 
}; 

template<class T> 
Item<T>::Item() 
{ 
    element = 0; 
    size = 10; 
    array = new T[size]; 
} 

template<class T> 
Item<T>::~Item() 
{ 
    delete[] array; 
} 
template<class T> 
void Item<T>::add(T item) 
{ 
    if (in() == false) 
    { 
     size++; 
     array[size] = Item; 
    } 
} 

template<class T> 
void Item<T>::in(T item) 
{ 
    for (int i = 0; i < size; i++) 
    { 
     if (array[i] == Item) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

template<class T> 
int Item<T>::get() 
{ 
    return element; 
} 

template<class T> 
void Item<T>::output() 
{ 
    for (int i = 0; i < size; i++) 
    { 
     cout << array[i] << endl; 
    } 
} 



int main() 
{ 





    system("pause"); 
    return 0; 

} 
+0

い'無効出力(T配列):私はこれを得ましたか。 – NathanOliver

+0

はええ、私はこのエラーを見て、私は – xerror

答えて

0

は、私は先に行って、すべてのコンパイルエラーを修正していますが、もう一度あなたのテキストボックス(または何を)勉強しなければならないしてください。

私は交換していたあなたの行のコメント:

#include <iostream> 
using namespace std; 

template<class T> 
class Item { 
private: 
    Item(); 
    ~Item(); 
    void Add(T item); 
    int get(); 
// void output(T array); 
    void output(); 
    bool in(T item); 
    T *array; 
    int element; 
    int size; 
}; 

template<class T> 
Item<T>::Item() 
{ 
    element = 0; 
    size = 10; 
    array = new T[size]; 
} 

template<class T> 
Item<T>::~Item() 
{ 
    delete[] array; 
} 
template<class T> 
void Item<T>::Add(T item) 
//void Item<T>::add(T item) 
{ 
    if(in(item) == false) 
// if (in() == false) 
    { 
     size++; 
//  array[size] = Item; 
     array[size] = item; 
    } 
} 

template<class T> 
//void Item<T>::in(T item) 
bool Item<T>::in(T item) 
{ 
    for (int i = 0; i < size; i++) 
    { 
//  if (array[i] == Item) 
     if(array[i] == item) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

template<class T> 
int Item<T>::get() 
{ 
    return element; 
} 

template<class T> 
void Item<T>::output() 
{ 
    for (int i = 0; i < size; i++) 
    { 
     cout << array[i] << endl; 
    } 
} 



int main() 
{ 
    system("pause"); 
    return 0; 

} 

をいますが、コンパイラのメッセージを読んでいませんか? `マッチ`テンプレート のボイド項目 ::出力() `;

C02QT2UBFVH6-lm:~ gsamaras$ g++ -Wall main.cpp 
main.cpp:32:15: error: out-of-line definition of 'add' does not match any declaration in 'Item<T>'; did you mean 'Add'? 
void Item<T>::add(T item) 
       ^~~ 
       Add 
main.cpp:9:10: note: 'Add' declared here 
    void Add(T item); 
     ^
main.cpp:37:23: error: 'Item' does not refer to a value 
     array[size] = Item; 
        ^
main.cpp:5:7: note: declared here 
class Item { 
    ^
main.cpp:42:15: error: return type of out-of-line definition of 'Item::in' differs from that in the declaration 
void Item<T>::in(T item) 
~~~~  ^
main.cpp:12:10: note: previous declaration is here 
    bool in(T item); 
    ~~~~^
main.cpp:46:25: error: 'Item' does not refer to a value 
     if (array[i] == Item) 
         ^
main.cpp:5:7: note: declared here 
class Item { 
    ^
main.cpp:48:13: error: void function 'in' should not return a value [-Wreturn-type] 
      return true; 
      ^ ~~~~ 
main.cpp:52:13: error: void function 'in' should not return a value [-Wreturn-type] 
      return false; 
      ^ ~~~~~ 
main.cpp:64:15: error: out-of-line definition of 'output' does not match any declaration in 'Item<T>' 
void Item<T>::output() 
       ^~~~~~ 
7 errors generated. 
+1

は私が説明を期待して、私はdownvoteを参照してください – xerror

+0

男:) @gsamarasありがとうそれを修正します。答えを改善する方法についてご意見がありましたら、ぜひお聞かせください。 :) – gsamaras

+0

私はそれだけで画面にエラー取得メインでこの関数を呼び出すとき:/ – xerror

関連する問題