2016-04-27 17 views
-1

一般的なツリーを作成しようとしています。頂点の値を比較するための関数オブジェクトを追加しました。ヘッダファイルの汎用オブジェクトと関数オブジェクト

関連部品:

template <typename T,typename Func> 

.....

void addData(T dataIn,Func condition){ 

メイン:

#include "gentree.h" 
class compare_int { 
public: 
    int operator()(int a,int b){ 
     if (a==b) return 0; 
     else if (a>b) return -1; 
     else return 1; 

    } 
}; 
using namespace std; 

int main() { 
    genTree<int,compare_int> new_tr(5); 
    new_tr.addData(3,compare_int); 
    return 0; 
} 

私が取得エラーのが、私は問題を抱えてこの行:

new_tr.addData(3,compare_int); 

エラーは次のとおりです "expected primary-expression before") 'token'と 'invalid arguments' " アイデアはありますか?

+0

のように、一時的な比較オブジェクトを渡すことができます。 – Jarod42

答えて

0

オブジェクトではなくパラメータとして型を渡します。あなたはcompare_int型のオブジェクトを作成したいと、それを渡す必要があり:式new_tr.addData(3,compare_int); 3では

compare_int comparator; 
new_tr.addData(3, comparator); 
1

は値ですが、compare_intはタイプです。型をパラメーターとして関数に渡すことはできません。

あなたはおそらくない `addData`引数で、` Func`はコンストラクタでなりたい、別の値を作成、またはBTW

new_tr.addData(3,compare_int()); 
関連する問題