在Visual Studio 2015解决方案中实现c++模板的正确方法是什么?
What is the correct way to implement a C++ template in a Visual Studio 2015 solution?
我在计算机科学课上有一个作业,我们需要创建一个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
,那么到目前为止你已经做对了。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 通过JNI传递数据数组的最快方法是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 在另一个类视图中添加最多2个图表的正确方法是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 在C++中包含原型文件的正确方法是什么?
- 在 OpenCV C++ 中估计基本矩阵之前对相应点进行归一化的正确方法是什么?
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 将一系列整数放入类的最佳方法是什么?
- 从长整整转换为uint64_t的推荐方法是什么?
- 将此布尔值传递给此函数的最有效方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?