C++ 在类中声明类型别名的替代方法
我正在使用另一个库中的类(C++ 在类中声明类型别名的替代方法,c++,c++11,templates,c++17,C++,C++11,Templates,C++17,我正在使用另一个库中的类(sf::Texture)。 我想获得在该类中声明类型别名的功能,如: class Texture { public: using ResourceId = TextureId; //... } 因此,我可以在我的代码中执行此操作: enum class TextureId { texture1, texture2 //..etc } template<class ResourceType> class ResourceCo
sf::Texture
)。
我想获得在该类中声明类型别名的功能,如:
class Texture
{
public:
using ResourceId = TextureId;
//...
}
因此,我可以在我的代码中执行此操作:
enum class TextureId
{
texture1,
texture2 //..etc
}
template<class ResourceType>
class ResourceContainer
{
public:
ResourceContainer();
private:
ResourceType* resource_;
typename ResourceType::ResourceId id; // <--- this will have TextureId type
// when we create this object
// with <sf::Texture>
}
enum类
{
结构1,
纹理2/…等
}
模板
类资源容器
{
公众:
ResourceContainer();
私人:
资源类型*资源类型;
typename ResourceType::ResourceId id;//您可以使用trait类派生ResourceId
并将其专门用于纹理。例如:
template < typename T >
struct ResourceTypeTrait
{
using ResourceId = typename T::ResourceId;
};
template <>
struct ResourceTypeTrait< Texture >
{
using ResourceId = TextureId;
};
模板
结构资源类型特征
{
使用ResourceId=typename T::ResourceId;
};
模板
结构ResourceTypeTracit
{
使用ResourceId=TextureId;
};
然后你可以做:
template<class ResourceType>
class ResourceContainer
{
public:
ResourceContainer();
private:
ResourceType* resource_;
typename ResourceTypeTrait< ResourceType >::ResourceId id;
};
模板
类资源容器
{
公众:
ResourceContainer();
私人:
资源类型*资源类型;
typename ResourceTypeTracit::ResourceId;
};