删除重复的类型定义

Removing duplicate typedef's

本文关键字:类型 定义 删除      更新时间:2023-10-16

我在以下程序中重复了代码。我需要将using VectorPtr = std::vector<T>*移出两个foo类。我需要将私有ptr用作getVal方法的返回指针。我该如何将别名移出课程?

enum ENUM
{
    E1,
    E2
};
template<ENUM e, class T> struct foo;
template<class T>
class foo<ENUM::E1, T>
{
public: 
    using VectorPtr = std::vector<T>*;
    static VectorPtr getVal() { return ptr; }   
private:    
    static VectorPtr ptr;
};
template<class T>
class foo<ENUM::E2, T>
{
public:
    using VectorPtr = std::vector<T>*;
    static VectorPtr getVal() { return ptr; }
private:
    static VectorPtr ptr;
};

您需要模板using

template<class T>
using VectorPtr = std::vector<T>*;
template<ENUM e, class T> struct foo {
public:
    static VectorPtr<T> getVal() { return ptr; }
private:
    static VectorPtr<T> ptr;
};

(使用相同的模板using):

template<ENUM e, class T> struct foo;
template<class T>
class foo<ENUM::E1, T> {
public:
    static VectorPtr<T> getVal() { return ptr; }
private:
    static VectorPtr<T> ptr;
};
template<class T>
class foo<ENUM::E2, T> {
public:
    static VectorPtr<T> getVal() { return ptr; }
private:
    static VectorPtr<T> ptr;
};