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