C++:类型定义和嵌套类问题

标签 c++ class

我有:

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/

相关文章:

c++按值传递模板化unique_ptr

C++ 错误 : "' class' does not name a type"and "invalid use of incomplete type ‘struct ...' "

c++ - 非静态数据成员的无效使用

python - 从实例而不是类继承 [Python 3]

php - 将一个静态变量分配给另一个静态变量。为什么会抛出错误?

c++ - 给定纬度/经度对 vector ,我如何创建一个 vector ,使点之间的距离小于或等于某个常数?

c++ - 使用 static_assert 检查传递给宏的类型

c++ - vector 是否在 push_back() 上重新创建所有对象?

c++ - 如何在 C++ 中编写默认构造函数?

C# - 是否可以隐藏公开继承的方法(例如,对派生类私有(private))