0
次のプログラムにコードが重複しています。 foo
クラスからusing VectorPtr = std::vector<T>*
を移動する必要があります。 getVal
メソッドからリターンポインタとしてプライベートptr
を使用する必要があります。クラスからエイリアスを移動するにはどうすればよいですか?重複するtypedefの削除
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
を使用して)をテンプレートに必要
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;
};
ポインタが悪いとしてちょうどそれを使用して維持するためにポインタ型をエイリアシング悪い悪い。 C++では、 'Ptr'は' * 'と書かれています。それに慣れるほうがいい。 – StoryTeller
「エイリアスをクラスから移動する」を定義します。エイリアスをグローバルに宣言したい場合は、それを実行してください。 'テンプレート VectorPtr = std :: vector *'を使用し、両方のクラスから 'VectorPtr 'と簡単に参照してください。 –
あなたのコードを確認するのにhttps://codereview.stackexchange.com/を使用してください – HDJEMAI