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
C++ 将非模板类转换为模板_C++_Templates - Fatal编程技术网

C++ 将非模板类转换为模板

C++ 将非模板类转换为模板,c++,templates,C++,Templates,我有一个自制的数据结构(例如链表),工作得很好,但是当我创建这个类时,我是基于字符串创建的,但是现在我想使用该数据结构,并使用它保存另一个自制的数据类型。我知道这涉及到模板(获取工作数据结构并对其应用任何数据类型的能力),但我并没有真正使用过它们 要将非模板类转换为模板类,我应该遵循哪些步骤?您需要做的主要事情是将模板规范放在前面: template <class T> class A { ... }; 模板 甲级{ ... }; 然后使用T而不是字符串类型 在创建模板时有很

我有一个自制的数据结构(例如链表),工作得很好,但是当我创建这个类时,我是基于字符串创建的,但是现在我想使用该数据结构,并使用它保存另一个自制的数据类型。我知道这涉及到模板(获取工作数据结构并对其应用任何数据类型的能力),但我并没有真正使用过它们


要将非模板类转换为模板类,我应该遵循哪些步骤?

您需要做的主要事情是将模板规范放在前面:

template <class T>
class A {
  ...
};
模板
甲级{
...
};
然后使用T而不是字符串类型

在创建模板时有很多其他的事情要考虑,但是它取决于特定的情况。 使用模板时,您将指定新类型:

A<MyType> my_object;
myu对象;

您需要做的主要事情是将模板规范放在前面:

template <class T>
class A {
  ...
};
模板
甲级{
...
};
然后使用T而不是字符串类型

在创建模板时有很多其他的事情要考虑,但是它取决于特定的情况。 使用模板时,您将指定新类型:

A<MyType> my_object;
myu对象;
这是基本动作

  • 将类的所有方法定义从.cpp移到.h文件
  • 将模板规范(
    模板
    )放在所有声明和定义之前
  • 将所有类名说明符更改为模板名,即
    A::A(){}
    应变为
    A::A(){}
  • 如果需要,请将方法调用的名称更改为具有类型参数的名称
  • 将以前类型的所有条目更改为类型参数名称
  • 当然可以有很多其他的事情。

    这是基本动作

  • 将类的所有方法定义从.cpp移到.h文件
  • 将模板规范(
    模板
    )放在所有声明和定义之前
  • 将所有类名说明符更改为模板名,即
    A::A(){}
    应变为
    A::A(){}
  • 如果需要,请将方法调用的名称更改为具有类型参数的名称
  • 将以前类型的所有条目更改为类型参数名称

  • 当然还有很多其他问题。

    接下来的问题是如何指定我正在使用新类型,以及我是否需要将保存我正在使用的类型的文件包含在现在的模板classI中。我在回答中添加了一些细节。声明模板类时不需要声明类型,因为模板类不知道t将是什么类型。实例化类时,需要声明类型。谢谢。之所以使用此模板,是因为我可以保存唯一的数据类型,而不必每次使用时都重写结构(我认为这是模板的参数之一,不确定)。更不用说,它将做得非常好,目前的应用程序,使其可用的新类型我不知道你说的“独特”是什么意思。如果替代方案(没有模板)是创建几个非常相似的类,则您希望使用模板。如果您的模板仅用于一种类型,则将其作为模板没有多大意义。这就像用一个参数创建一个函数,该参数将始终传递相同的值。接下来的问题是,我如何指定我正在使用新类型,以及我是否需要将保存我正在使用的类型的文件包含在现在的模板classI中。我在回答中添加了一些细节。声明模板类时不需要声明类型,因为模板类不知道t将是什么类型。实例化类时,需要声明类型。谢谢。之所以使用此模板,是因为我可以保存唯一的数据类型,而不必每次使用时都重写结构(我认为这是模板的参数之一,不确定)。更不用说,它将做得非常好,目前的应用程序,使其可用的新类型我不知道你说的“独特”是什么意思。如果替代方案(没有模板)是创建几个非常相似的类,则您希望使用模板。如果您的模板仅用于一种类型,则将其作为模板没有多大意义。这就像让一个函数的参数总是被传递相同的值一样,我认为这可以独立于分离存根和实现来完成(就这么做了)。所以第1步实际上是不相关的(更完美的世界),第2步依赖于第1步,但第3-5步在所有方面仍然相关。您可能需要检查步骤4的措辞。我认为这可以独立于分离存根和实现(刚刚完成)来完成。所以第1步实际上是不相关的(更完美的世界),第2步依赖于第1步,但第3-5步在所有方面仍然相关。您可能需要检查步骤4的措辞。