2012-03-25 10 views
0

それは(アルゴリズムコンテストのために)自分で実装ヒープだ.There私はから回復することはできませんいくつかのコンパイルエラーです...不正使用

\Map_Heap.cpp|13|error: invalid use of non-static data member 'MapHeap<DT>::nv'| 
\Map_Heap.cpp|19|error: from this location| 

コード:

#include<cstdio> 
#include<cstring> 
const int HEAP_SIZE=10005; 
template<class DT> 
struct MapHeap 
{ 
    DT f[HEAP_SIZE+5]; 
    int mp1[HEAP_SIZE+5];//val -> index 
    int mp2[HEAP_SIZE+5];//index -> val 
    int nv;///line 13 
    MapHeap():nv(0) 
    { 
     memset(mp1,-1,sizeof(mp1)); 
     memset(mp2,-1,sizeof(mp2)); 
    } 
    void print(int n=nv)//line 19 
    { 
     for(int i=1;i<=n;i++) printf("%d ",f[i]); 
     puts(""); 
     for(int i=1;i<=n;i++) printf("%d ",mp1[i]); 
     puts(""); 
     for(int i=1;i<=n;i++) printf("%d ",mp2[i]); 
     puts(""); 
    } 
}; 
+0

面白い '**'が前面にあります。これらのコードの一部ですか、またはその行を太字にしたいのですか?これはコードでは機能しないためです。 – Thomas

+1

私はその行を太字にしたいと思っていましたが、うまくいかなかったのが分かりました...> _ < – Sayakiss

答えて

8

メンバー変数にデフォルトの引数を設定できないということです。代わりに過負荷を使用することを検討してください。

void print() { print(nv); } 
void print(int n) { 
    ... 
} 
+2

「メンバ変数にデフォルトの引数を設定できません」という標準で明示されていますか? –

+0

@Mr .TAMER:私は分かりません –

+0

うわー..それはクールです..それは問題をはっきりと指摘しています...(私は英語のネイティブスピーカーではありません...私が誤解をしたら私の貧しい人の英語で申し訳ありません) – Sayakiss

関連する問題