Инициализация структуры - PullRequest
       9

Инициализация структуры

0 голосов
/ 23 февраля 2011

Я использовал следующую структуру

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>

Где проблема?

1 Ответ

0 голосов
/ 23 февраля 2011

Зачем ожидать конвертацию из List в TSet, если вы ее не написали? Кроме того, для типа indices требуется typename на передней панели, поскольку это зависимый тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...