2016-04-28 22 views
1

:クラス定義で書き込みを短縮するC++:私はtypedefingと入れ子になったクラスの問題

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

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

私のような何かをしたいです。問題は、(クラスの前に前方宣言があり、パブリックセクションがtypedefされているため)不完全な型へのポインタを取得するか、ThreadPoolのprivateメンバーにアクセスしようとしているか(クラス外でtypedefしようとしている場合)です。これをtypedefして実装する際に自由に使うことができますか?

+0

単純にtypedefをプライベートセクションに入れないのはなぜですか? – user2079303

+0

クラスのユーザがアクセスできるようにしたい – susdu

+0

代わりに、基本クラス 'Thread_t'をtypedefできますか?あなたの 'TP_Thread'はプライベートですが、それはユーザにはアクセスできません。 –

答えて

1

なぜクラスのパブリックセクションであなたのtypedefを含まない:

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

、あなたのコード内でThreadPool::Shpを使用しています。

+0

ありがとう、何とか複数のセクションを持つことは、私を逃した – susdu

関連する問題