通常在使用模板时,您最终会得到类似这样的东西:
template <T>
class the_class
{
public:
// types
typedef T value_type;
typedef const value_type const_value_type;
typedef value_type& reference;
typedef const_value_type& const_reference;
typedef value_type* pointer;
typedef const_value_type* const_pointer;
...
};
不过,这是很多相同的东西,被复制到许多不同的模板化类中。是否值得创建如下内容:
// template_types.h
#define TEMPLATE_TYPES(T) \
typedef T value_type; \
typedef const value_type const_value_type; \
typedef value_type& reference; \
typedef const_value_type& const_reference; \
typedef value_type* pointer; \
typedef const_value_type* const_pointer;
所以我的类(class)就变成了:
#include "template_types.h"
template <typename T>
class the_class
{
public:
TEMPLATE_TYPES(T)
...
};
这看起来更干净,并且在我制作其他模板类时避免了重复。这是一件好事吗?还是我应该避免这种情况而只是复制粘贴 typedef?
最佳答案
当然,您正在做的事情会奏效,但有点过时了。您是否尝试过将这些内容放入您可以从中派生的另一个模板类中?
template <typename T>
class template_defs
{
public:
// types
typedef T value_type;
typedef const value_type const_value_type;
typedef value_type& reference;
typedef const_value_type& const_reference;
typedef value_type* pointer;
typedef const_value_type* const_pointer;
};
template <typename T>
class the_class : public template_defs<T>
...
关于C++ 模板宏快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1533917/