使用C++中的模板变量进行结构化

mon*_*ing 61 c++ templates struct class

我正在玩模板.我不是要重新发明std :: vector,我试图掌握C++中的模板.

我可以这样做吗?

template <typename T>
typedef struct{
  size_t x;
  T *ary;
}array;
Run Code Online (Sandbox Code Playgroud)

我想要做的是一个基本的模板化版本:

typedef struct{
  size_t x;
  int *ary;
}iArray;
Run Code Online (Sandbox Code Playgroud)

如果我使用类而不是struct,它看起来像是有效的,所以使用typedef结构是不可能的?

Bin*_*ier 130

问题是你不能模板化typedef,也不需要在C++中输入typedef结构.

以下将满足您的需求

template <typename T> 
struct array { 
  size_t x; 
  T *ary; 
}; 
Run Code Online (Sandbox Code Playgroud)

  • +1用于解释您的代码和@ monkeyking之间的区别. (3认同)

And*_*rey 18

template <typename T>
struct array {
  size_t x;
  T *ary;
};
Run Code Online (Sandbox Code Playgroud)


dir*_*tly 9

您不需要typedef对类和结构进行显式操作.你需要什么typedef?此外,typedefa之后的template<...>语法错误.只需使用:

template <class T>
struct array {
  size_t x;
  T *ary;
} ;
Run Code Online (Sandbox Code Playgroud)


sep*_*p2k 5

您可以模拟结构和类.但是,您无法模板化typedef.所以template<typename T> struct array {...};工作,但template<typename T> typedef struct {...} array;没有.请注意,在C++中不需要typedef技巧(你可以在C++中使用没有struct修饰符的结构).