在 Visual Studio 2015 解决方案中实现 C++ 模板的正确方法是啥?
Posted
技术标签:
【中文标题】在 Visual Studio 2015 解决方案中实现 C++ 模板的正确方法是啥?【英文标题】:What is the correct way to implement a C++ template in a Visual Studio 2015 solution?在 Visual Studio 2015 解决方案中实现 C++ 模板的正确方法是什么? 【发布时间】:2016-10-17 16:00:49 【问题描述】:我在计算机科学课上有一个作业,我们需要创建一个 C++ 类的模板化版本。我们的老师几乎没有给我们任何关于这件事的指导,所以我一直在摸索作业。
我似乎已经使我们书中的代码工作了,但我不确定我使用的方法是否合适。
本质上,他们在书中提供的示例是一个“bag”类,它是一个简单的容器,用于存储任何形式的标准数据类型(int、char、string 等)。此类的模板化版本在名为 bag5.h 的头文件中声明,实现在名为 bag5.template 的 .template 文件中给出。然后,标头使用此行从 .template 文件中检索代码,该行位于标头的最末端:
#include "bag5.template"
.
起初我不确定如何使用 Visual Studio 2015 在 C++ 解决方案中实现 .template 类型的文件。我搜索了答案,但不幸的是,搜索术语“Visual Studio”和“模板”提供了几乎关于如何为 Visual Studio 项目创建模板的结果是无限的,但在 Visual Studio 中正确实现通用 C++ 模板时我能找到的结果很少。
通过反复试验,我终于通过将 .template 文件作为“文本”类型的文件而不是 C++ 源文件添加到解决方案中来获得源代码。我的问题很简单:这是使用 Visual Studio 2015 实现声明模板定义的正确方法吗?
另外,有没有办法让 Visual Studio 2015 将我的 .template 文件识别为 C++ 代码并相应地格式化它们?当我在解决方案中将 .template 实现文件添加为“文本”类型时,IDE 不会对文件中的文本进行颜色编码,而是将其完全留在白色文本上。
【问题讨论】:
欢迎来到 ***.com。请花一些时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请read about how to ask good questions,并学习如何创建Minimal, Complete, and Verifiable Example。 在解决方案资源管理器中右击.template文件,选择Open With...,然后选择"C++ Source代码编辑器(默认)” 来自编辑器列表。这将正确应用语法突出显示并启用 IntelliSense 支持。 IInspectable,你知道为什么 VS 2015 没有给我这个选项吗?它有“xml 编辑器”、“源代码编辑器”、“html 编辑器”的选项,但没有 C++ 选项。如果我在我的 .cpp 文件上“打开”而不是在 .template 文件上“打开”,我可以将 C++ 源代码编辑器视为一个选项。 @Rob:如果这对您不起作用,还有一个更好的选择:转到 Tools → Options,然后导航到 文本编辑器 → 文件扩展名。在那里,您可以设置文件扩展名和 Visual Studio 所称的 Editing Experience(包括语法突出显示和 Intellisense)之间的自定义映射。 【参考方案1】:通常的做法是将模板的代码直接放在标题中。
如果您真的想将代码与声明分开,您可以选择 VC++ 识别为标头的两种不同的扩展,并让一个包含另一个。例如,有bag5.h
,其中包括bag5.hh
。
只要两个扩展都被 VC++ 识别为标头,生活就很好了——你不需要做太多的事情来告诉它如何使用它们,它会自动对两者应用颜色编码。
【讨论】:
感谢您的帮助。【参考方案2】:这没有什么问题 - 您可以随意命名文件。
但这很不合常规;我从未见过使用扩展名.template
,显然你的IDE也没有。
我会使用.ipp
,或者只使用.h
。您可以查看您的 IDE 是否更喜欢这些扩展。
如果您需要使用.template
,那么到目前为止您已经正确地使用了。不知道能不能强制VS高亮C++之类的文件。
【讨论】:
以上是关于在 Visual Studio 2015 解决方案中实现 C++ 模板的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
从 Visual Studio 2017 RC 降级到 Visual Studio 2015 的解决方案