2016-04-28 2 views
1

у меня есть:C++: typedefing и вложенный класс вопрос

class ThreadPool 
{ 
public: 
    .... 
private: 
    struct TP_Thread: public Thread_t 
    { 
     .... 
    }; 
    std::vector<std::tr1::shared_ptr<TP_Thread> > m_threads; 
    ..... 
}; 

Я хочу сделать что-то вроде:

typedef std::tr1::shared_ptr<TP_Thread> shpThread; 

сократить запись в определениях классов. Проблема в том, что я либо получаю указатель на неполный тип (из-за прямого объявления перед классом и typedef в публичном разделе), либо пытаюсь получить доступ к закрытому члену ThreadPool (в случае, когда я пытаюсь ввести его вне класса). Как я могу напечатать это, чтобы я мог свободно использовать его во время реализаций?

+0

Почему бы просто не поставить typedef в приватный раздел? – user2079303

+0

Я хочу, чтобы он был доступен для пользователей класса – susdu

+0

Можете ли вы typedef вместо базового класса 'Thread_t'? Ваш 'TP_Thread' является закрытым, он все равно недоступен для пользователей. –

ответ

1

Почему не включая ваше ЬурейеЕ в публичной части класса:

class ThreadPool 
{ 
public: 
    .... 
private: 
    struct TP_Thread: public Thread_t 
    { 
     .... 
    }; 
public: 
    typedef std::tr1::shared_ptr<TP_Thread> Shp; 
    ... 

затем использовать ThreadPool::Shp в вашем коде.

+0

спасибо, имея несколько разделов, как-то ускользнул от меня – susdu

Смежные вопросы