2016-04-28 71 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