templates相关内容

C++ 模板只是变相的宏吗?

我用 C++ 编程已经有几年了,我用过很多 STL,并且创建了几次自己的模板类来看看它是如何完成的. 现在我正在尝试将模板更深入地集成到我的 OO 设计中,一个烦人的想法不断地回到我的脑海:它们只是一个宏,真的……你可以使用 #defines 实现(相当丑陋的)auto_ptrs,如果你真的想的话. 这种对模板的思考方式有助于我理解我的代码实际上是如何工作的,但我觉得我一定是错过了重点 ..
发布时间:2022-01-11 19:21:18 C/C++开发

c++模板和头文件

所以,我听说 C++ 模板不应该分为头文件 (.h) 和源文件 (.cpp). 例如,这样的模板: 模板J级{某事;}; 这是真的吗?为什么会这样? 如果因此我必须将声明和实现放在同一个文件中,我应该将它放在 .h 文件还是 .cpp 文件中? 解决方案 Headers. 这是因为模板是在编译时而不是链接时实例化的,并且不同的翻译单元(大致相当于您的 ..
发布时间:2022-01-11 16:07:23 C/C++开发

模板运算符链接器错误

我有一个链接器错误,我已简化为一个简单的示例.构建输出是: debug/main.o: 在函数 main': C:\Users\Dani\Documents\Projects\Test1/main.cpp:5:未定义的对log&的引用日志::运算符 ..
发布时间:2022-01-11 15:41:15 C/C++开发

C++ - LNK2019 错误未解析的外部符号 [模板类的构造函数和析构函数] 在函数 _main 中引用

[[UPDATE]] -> 如果我 #include "Queue.cpp" 在我的 program.cpp 中,它工作得很好.这应该没有必要吧? 大家好——我正在使用 Visual Studio 2010,但在链接快速而肮脏的队列实现时遇到了问题.我从一个 empty Win32 控制台应用程序开始,所有文件都存在于项目中.对于冗长,这里是复制我的错误的完整代码.我意识到某些代码实际上可能 ..
发布时间:2022-01-11 15:30:29 C/C++开发

包括 .cpp 文件?

可能重复: 为什么模板只能在头文件中实现? 我最近一直在尝试使用 C++.目前我正在尝试编写一些我确信每个人都至少做过一次的事情:一个简单的 LinkedList 类.代码已完成,但我不知何故无法编译它.我一直在谷歌搜索,似乎我将目标文件链接错了.我的代码基本上是这样的: test.cpp #include "linkedlist.h"主函数(){链表列表;//做一点事} ..
发布时间:2022-01-11 15:25:06 C/C++开发

链接器如何跨翻译单元处理相同的模板实例化?

假设我有两个翻译单元: foo.cpp void foo() {自动 v = std::vector();} bar.cpp void bar() {自动 v = std::vector();} 当我编译这些翻译单元时,每个都会实例化 std::vector. 我的问题是:这在链接阶段是如何工作的? 两个实例化的名称是否不同? 链接器是否将它们作为重复项删除? ..
发布时间:2022-01-11 15:03:20 C/C++开发

为什么我会得到“无法解析的外部符号"?使用模板时出错?

当我使用模板为类编写 C++ 代码并在源 (CPP) 文件和头 (H) 文件之间拆分代码时,在链接最终可执行文件,尽管目标文件已正确构建并包含在链接中.这里发生了什么,我该如何解决? 解决方案 模板类和函数在使用之前不会被实例化,通常在单独的 .cpp 文件中(例如程序源).使用模板时,编译器需要该函数的完整代码才能构建具有适当类型的正确函数.但是,在这种情况下,该函数的代码在模板的源文件 ..
发布时间:2022-01-11 14:46:25 C/C++开发

如何将 jQuery.tmpl 模板呈现为字符串?

jquery.tmpl的文档使用.appendTo在渲染过程中将模板插入DOM: $.tmpl(myTemplate, myData).appendTo("#target"); 我正在尝试从另一个模板引擎转换现有应用程序,并且我的代码需要先将模板呈现为字符串,然后再将其添加到 DOM.这可能吗?那要怎么做呢? 解决方案 jQuery Templating 提供 $.template() ..
发布时间:2022-01-11 13:05:24 其他开发

C++ 模板不接受迭代器

我正在重新学习 C++,并开始尝试应该是一个简单的算法:快速排序.我的函数有这个签名: 模板void QSort(typename std::vector::iterator begin, typename std::vector::iterator end) 它在我的主函数中被调用: int main(){std::vectorunsort({56,32,11, ..
发布时间:2022-01-10 14:37:30 C/C++开发

C++ 二进制常量/字面量

我正在使用一个众所周知的模板来允许二进制常量 模板结构二进制{枚举 { 值 = (N % 10) + 2 * 二进制:: 价值 } ;};模板结构二进制{枚举 { 值 = 0 } ;}; 所以你可以做类似二进制::value 的事情.不幸的是,这对于 unsigned long long 有 20 位数字的限制. 谁有更好的解决方案? 解决方案 如果您的二 ..
发布时间:2022-01-09 19:27:07 C/C++开发

具有足够大的返回类型以保存结果的 Sum 函数

这是来自 C++ Primer Chapter 16.2.3 的一个问题(问题 16.41): 编写一个返回类型为的 sum 版本保证足够大以容纳加法的结果. 我确信可能有一些相当晦涩的 STL 函数可以完成这项工作,但在本章的上下文中,它介绍了标准类型转换模板,例如 remove_reference 和 make_signed 我确信它打算让我用来完成此任务,并与尾随返回 ..
发布时间:2022-01-09 16:09:58 C/C++开发

在 SAS 中,如果空变量不存在,是否有更快的方法来创建它?

目前我正在使用类似于上一个问题中使用的方法, 测试变量是否存在 但稍作修改使其能够更轻松地处理大量变量.以下代码确保 n6 具有与 dsid2 引用的数据集相同的变量. 数据 n6;设置 n5;dsid=open('n5');dsid2=open(/*空模板数据集*/);varsn=attrn(dsid2,nvars);我=1;直到 i = varsn;如果 varnum(dsid, ..
发布时间:2022-01-08 18:01:10 其他开发