删除重复的typedef

时间:2017-12-25 19:16:51

标签: c++

我在以下程序中复制了代码。我需要从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;
};

1 个答案:

答案 0 :(得分:1)

您需要模拟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;
};