myNamespaceという名前空間に(次のように)テンプレート関数があります。
template <typename setX>
void getRandomItems(NaturalNumber size, setX &random, setX &items)
{
assert(size <= items.size());
//set of randomly selected indices for items
set<NaturalNumber> index;
NaturalNumber r, i;
while(index.size() < size)
{
r = unifRand(0,items.size()-1);
index.insert(r);
}
typename setX::iterator it, sit = items.begin();
for(i = 0, it = index.begin(); it != index.end(); it ++)
{
//find the r-th elt in index
r = *it;
for(; i < r; i ++)
sit++;
random.insert(*sit);
}
}
ただし、この関数を呼び出すと、次のエラーが発生します。
generic.h:関数'void myNamespace :: getRandomItems(NaturalNumber、setX&、setX&)[with setX = std :: set <std :: basic_string <char>>、NaturalNumber = long unsigned int]': 合成グラフ.C:87:55:ここからインスタンス化 generic.h:74:32:エラー:「operator=」に一致しない'it = index.std :: set :: begin [with _Key = long unsigned int、_Compare = std :: less <long unsigned int>、 _Alloc = std :: allocator <long unsigned int>、std :: set <_Key、_Compare、_Alloc> :: iterator = std :: _ Rb_tree_const_iterator <long unsigned int>]() ' /usr/include/c++/4.5/bits/stl_tree.h:224:5:注:候補は次のとおりです:std :: _ Rb_tree_const_iterator <std :: basic_string <char>>&std :: _ Rb_tree_const_iterator <std :: basic_string <char> > :: operator =(const std :: _ Rb_tree_const_iterator <std :: basic_string <char>>&) 合成グラフ.C:87:55:ここからインスタンス化 generic.h:74:32:エラー:'演算子!='に一致しません!= index.std :: set <_Key、_Compare、_Alloc> :: end [with _Key = long unsigned int、_Compare = std :: less <long unsigned int>、_ Alloc = std :: allocator <long unsigned int>、std :: set <_Key、_Compare、_Alloc> :: iterator = std :: _ Rb_tree_const_iterator <long unsigned int>]() ' /usr/include/c++/4.5/bits/stl_tree.h:291:7:注:候補は:bool std :: _ Rb_tree_const_iterator <_Tp> :: operator!=(const std :: _ Rb_tree_const_iterator <_Tp> :: _ Self&) const [with _Tp = std :: basic_string <char>、std :: _ Rb_tree_const_iterator <_Tp> :: _ Self = std :: _ Rb_tree_const_iterator <std :: basic_string <char>>] generic.h:77:4:エラー:割り当てで「conststd ::basic_string<char>」を「NaturalNumber」に変換できません
私はすべての組み合わせを試しましたが、運がありません、助けてください!!!