模板类 typedef - 在课外使用

Ghi*_*ita 3 c++ templates visual-studio-2010

我有一个这样的课程:

struct WorkItemResultData;

template <typename ExecutionPolicy>
class Engine
{
public:
    typedef std::shared_ptr<WorkItemResultData> WorkItemResultData_ptr;
}
Run Code Online (Sandbox Code Playgroud)

typedef不依赖于任何模板参数。有没有办法在Engine::WorkItemResultData_ptr课外使用类型Engine

编辑我知道我可以像 awoodland 提出的解决方案一样使用它,但我的 typedef 与类型参数无关,并且希望能够在不指定特定引擎类型的情况下执行此操作。

Luc*_*lle 5

由于 typedef 根本不依赖Engine,您可以将其拉出类:

typedef std::shared_ptr<WorkItemResultData> WorkItemResultData_ptr;

template <typename ExecutionPolicy>
class Engine {...};
Run Code Online (Sandbox Code Playgroud)

如果你想保持封装,只需使用命名空间:

namespace Engine
{
    typedef std::shared_ptr<WorkItemResultData> WorkItemResultData_ptr;
}
Run Code Online (Sandbox Code Playgroud)