テンプレートオブジェクトのベクトルのベクトルを作成しようとしています。内部ベクトルのサイズを変更しようとするとエラーが発生し、エラーメッセージの先頭または末尾を作成できません。HashTable :: Item::Itemをどこから取得するのかわかりません。助言がありますか?
/usr/include/c++/4.4.6/bits/stl_vector.h(552):エラー:コンストラクター "HashTable :: Item :: Item [with Key = int、Value=Varvalue]"のインスタンスが引数リストのサイズに一致しません(size_type __new_size、value_type __x = value_type())
detected during: instantiation of "void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type={size_t={unsigned long}}, std::vector<_Tp, _Alloc>::value_type) [with _Tp=HashTable<int, Varvalue>::Item, _Alloc=std::allocator<HashTable<int, Varvalue>::Item>]" at line 118 of "main.cc"
関連するコードは次のとおりです。
#define VECLEN 16
クラスVarvalue
{{
公衆:
char data [32];
};
レンプレート
クラスHashTable
{{
プライベート:
クラスアイテム
{{
公衆:
ブール値が有効です。
キーキー;
値値;
アイテム*次;
Item(const Key k、const Value v、Item * b = 0、bool val = true):
key(k)、value(v)、next(b)、valid(val){}
};
vector<vector<Item> > table;
int tableSize;
HashTable(const int s): tableSize(s)
{
table.resize(tableSize);
for(int i=0; i<table.size(); i++)
table[i].resize(VECLEN); // <<-- error line 118
}
}
int main()
{
HashTable<int, Varvalue> htable(nkeys);
}