我有:
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;
缩短类定义中的书写。问题是我要么得到指向不完整类型的指针(因为在类之前的前向声明和公共(public)部分的类型定义),要么试图访问 ThreadPool 的私有(private)成员(如果我试图在类之外对其进行类型定义)。我怎样才能对它进行类型定义,以便在实现过程中自由使用它?
最佳答案
为什么不在类的公共(public)部分包含您的 typedef:
class ThreadPool
{
public:
....
private:
struct TP_Thread: public Thread_t
{
....
};
public:
typedef std::tr1::shared_ptr<TP_Thread> Shp;
...
然后在您的代码中使用 ThreadPool::Shp
。
关于C++:类型定义和嵌套类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36926404/