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