我使用了以下结构
template <typename Item>
struct TSet
{
typedef std::set <int, comparator <Item> > Type;
};
作为结构的数据成员
template <typename Item>
struct TObject
{
int code;
...
typename TSet <Item> ::Type indices;
TObject ( const List <Item> *list ) : code( 0 ), indices ( list ) {}
};
,其中
template <typename Item>
struct TList
{
typedef std::vector <Item> Type;
};
template <typename Item>
class List
{
private:
typename TList <Item>::Type items;
};
但我已将数据模型更改为
template <typename Item>
class TSet : public std::set <int, comparator <Item> >
{
};
template <typename Item>
struct TObject
{
int code;
...
typename TSet <Item> indices;
TObject ( const List <Item> *list ) : code ( 0 ), indices ( list ) {} //Error: Can not convert parameter 1 const List <Item> to const TSet <Item>
};
并且结构初始化存在问题。
Error: Can not convert parameter 1 const List <Item> to const TSet <Item>
问题出在哪里?
答案 0 :(得分:0)
如果你没有写一个转换,为什么你会期望从List
转换为TSet
?此外,indices
的类型在前面需要typename
,因为它是依赖类型。