Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typedef代码重复。模板类型中的模板类型 我是C++新手。所以,这个问题可能很愚蠢_C++_Templates_Duplication - Fatal编程技术网

Typedef代码重复。模板类型中的模板类型 我是C++新手。所以,这个问题可能很愚蠢

Typedef代码重复。模板类型中的模板类型 我是C++新手。所以,这个问题可能很愚蠢,c++,templates,duplication,C++,Templates,Duplication,例如,我有以下结构 template<typename _TpIn, typename _TpOut> struct TypesKernel { typedef _TpIn input_type; typedef _TpOut output_type; }; 模板 结构类型{ 输入类型中的类型定义; 类型定义输出类型; }; 现在我想在模板中使用它。例如: template<typename _TypesKernel> class A { ty

例如,我有以下结构

template<typename _TpIn, typename _TpOut>
struct TypesKernel {
    typedef _TpIn input_type;
    typedef _TpOut output_type;
};
模板
结构类型{
输入类型中的类型定义;
类型定义输出类型;
};
现在我想在模板中使用它。例如:

template<typename _TypesKernel>
class A {
    typedef typename _TypesKernel::input_type input_type;
    typedef typename _TypesKernel::output_type output_type;
    ....
};
模板
甲级{
typedef typename _TypesKernel::input_type input_type;
typedef typename _TypesKernel::output_type output_type;
....
};
对于我想使用TypesKernel的任何类,是否有可能以某种方式避免这种typedef重复


提前谢谢你

如果您需要那里的typedef,那么我看到它们包含在其中的唯一方法就是按照您所做的方式定义,或者从某些东西继承。您的类可以使用TypesKernel作为基类,或者它们都可以使用一个只有typedef的公共基类。(类似于
std::
迭代器框架)


然而,继承并不一定更好,在许多情况下,您可能会接受重复。

关于命名的备注:名称以下划线开头,后跟大写字母(除其他外)保留给实现。(例如,您可以将
\u TpIn
重命名为
TpIn
)。关于这个问题:我经常看到这样的代码(但请参见下面的答案)。好吧,我是从std获得的,但可能这不是一个好的示例…=))啊,我明白了:)std中的好名字被认为是“实现”,所以他们有权利