在Visual Studio 2015解决方案中实现c++模板的正确方法是什么?

What is the correct way to implement a C++ template in a Visual Studio 2015 solution?

本文关键字:方法 是什么 c++ Studio Visual 2015 解决方案 实现      更新时间:2023-10-16

我在计算机科学课上有一个作业,我们需要创建一个c++类的模板化版本。关于这件事,我们的老师几乎没有给我们任何指导,所以我一直在摸索着做作业。

我似乎已经使我们书中的代码工作了,但我不确定我使用的方法是否合适。

本质上,他们在书中提供的例子是一个"bag"类,它是一个简单的容器,用于存储任何方式的标准数据类型(int, char, string等)。该类的模板化版本在名为bag5.h的头文件中声明,实现在名为bag5.template的.template文件中给出。然后,头文件使用这一行从.template文件中检索代码,这一行位于头文件的末尾:

#include "bag5.template" .

起初,我不确定如何使用Visual Studio 2015在c++解决方案中实现.template类型的文件。我搜索了一个答案,但不幸的是,搜索术语"visual studio"answers"模板"提供了关于如何为visual studio项目创建模板的几乎无限的结果,但我几乎找不到在visual studio中正确实现通用c++模板。

通过反复试验,我最终通过将.template文件作为"text"类型的文件而不是作为c++源文件添加到解决方案中,使源代码能够工作。我的问题很简单:这是使用Visual Studio 2015实现声明模板定义的正确方法吗?

还有,有没有办法让Visual Studio 2015识别我的.template文件为c++代码并相应地格式化它们?当我在解决方案中添加.template实现文件作为类型"text"时,IDE不会对文件中的文本进行颜色编码,而是将其完全保留为黑色。

通常的做法是将模板的代码直接放在头文件中。

如果你真的想让代码与声明分开,你可以选择两个不同的扩展,vc++可以识别为头文件,并让其中一个包含另一个。例如,有bag5.h,其中包括bag5.hh

只要这两个扩展都被vc++识别为头文件,生活就会很美好——你不需要做太多的事情来告诉它如何处理它们,它会自动对它们应用颜色编码。

这没什么问题——你可以给你的文件起任何你喜欢的名字。

但这是相当非常规的;我从来没有见过使用扩展.template,显然你的IDE也没有。

我会使用.ipp,或者只是.h。您可以查看您的IDE是否更喜欢这些扩展。

如果你被要求使用.template,那么到目前为止你已经做对了。

我不知道你是否可以强制VS突出显示c++这样的文件。