问题标签 [template-classes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - c ++存储对纯虚拟类的引用作为类的成员
我有一个模板化的包装器,其中包含一个继承纯虚拟类的类的实例。
我的问题是如何将数据存储在包装器中。
- 我不能使用副本,因为无法实例化纯虚拟类(如果我使用简单的虚拟类,则无法切片)。
- 我没有设法保留参考。这个 ref 变得无效,因为我不管理我得到的对象的分配(超出范围)。
- 我唯一的解决方案是使用指针,即使我想避免这种情况,因为那不是很安全,我需要我的代码是健壮的。
我能做些什么?
这是一个模拟我的问题的小例子:
c++ - 在此范围内未声明 pointer_name 错误
我已经在模板基类的头文件中声明了指针first,last 和 counter ,但是当头文件包含在派生类的定义中时,会发生错误,指出first , last 和 counter未在此范围内声明。但是我之前声明的first、last和counter的头文件已经包含在派生类的头文件和实现文件中了。
c++ - 如何调整 C++ 代码以使用模板类
以下代码是 Red Black Tree 程序的一部分,它必须采用item
char 或 int,所以我决定使用模板类,但是我不知道如何通过完整的程序扩展它,编译器向我发送了一千个错误:
代码有德语名称,所以如果它更容易理解,我将翻译其中一些:
记事本.hpp
记事本.cpp
现在我应该怎么做?
鲍姆.hpp
鲍姆.cpp
c++ - 静态 const 成员变量的部分特化
目前,我已经实现了一个模板类 Mat,它是第三方库的矩阵类的包装器(T 是组件的类型:double、int 等)。现在,我希望实现一个张量类,使用一个 Mat 进行存储,第二个 Mat 用于映射索引。
我已将 Tensor 类模板化为 Tensor,其中 T 与 Mat 类相同, Order 和 Dim 是整数,是张量的顺序(或等级)和维度(2 或 3)。Sym 是对称的布尔标志。
Tensor 类将使用 Voigt 表示法将高阶张量压缩到矩阵上(例如,可以将 3×3×3×3 张量映射到 6×6 矩阵;这是通过将每对索引映射到单个索引来完成)。在 Voigt 表示法中,3×3 张量可以映射到 6×1 向量(矩阵),但将张量中的 (0,0) 分量移动到向量中的 0 位置。相似 (1,1) -> 1, (2,2) -> 2, (1,2)-> 3, (0,2)-> 4, 和 (0,1)-> 5。类似的规则退出 2×2 张量(它们映射到 3×1 矩阵)。
为此,我希望我的张量类拥有矩阵:
如果 Dim == 3 和 Sym == true。非对称张量和二维张量(共 4 个)都有对应的映射。这些不依赖于其他模板参数(T 和 Order)。
因此,我在什么时候专门研究它们?(在这里,这个问题适用于任何拥有模板化类的人,该类需要静态 const 成员只进行部分特化)。
我在这里检查了这个问题:Where to define static const member variables of a template class。但它没有讨论部分专业化。
到目前为止,我在同一个头文件中有一个前向声明和一个类定义:
在我的张量类的单元测试中,我可以输入:
问题是我必须为每个订单(1、2、3 和 4)都这样做。如果我有其他类型的张量(这里,real 是 long double 的 typdef),我会有太多重复的代码。
那我在哪里可以初始化地图呢?
c++ - 模板类如何成为C++中相同类型T的另一个模板类的属性?
我有一个模板类Tripla(列表结构的节点)和另一个模板类Lista。我想让它们通用,以便将来可以重用,但是我不确定如何将数据类型设置为 Lista 类中的 Tripla 对象。
}
一些编译错误包括无法转换Tripla*
为Tripla<T>*
和“错误 C2955:'Tripla':使用类模板需要模板参数列表”。
我在理解如何为两者设置相同的数据类型时遇到问题。例如,从 main.cpp,我想要类似的东西
这将自动使 Tripla *primer 和 *ultimo 与 int 一起工作。
c++ - 消除模板类的不需要的情况
我使用模板类类型数据类型作为类方法的参数。在那种方法中,我正在计算参数的差异并打印它。这只是来自实际项目的示例代码。
头文件.h
主文件
问题:因为,我正在尝试计算 中的参数之间的差异,其中尝试传递字符串calcDifference()
的第二个对象会产生问题。main()
这是因为无法在字符串上执行差分操作(至少直接)。
错误: /Users/siddharth/coding/cplusplus/xCode/CPPCodes/InterviewTest/InterviewTest/main.cpp:9:26: Invalid operands to binary expression ('std::__1::basic_string<char>' and 'std::__1::basic_string<char>')
我需要什么:我希望代码保持通用(对于我无法实际更改的调用函数)。我想找到一些解决方案,这样我就不会得到这个编译器错误,如果传递的参数是字符串类型,那么calcDifference()
应该打印一个语句(如“不允许字符串数据类型”)并返回到调用函数。我可以在calcDifference()
ONLY内部进行更改,因为在实际项目中我无法控制调用函数。我认为在这种情况下异常处理无济于事,因为它有助于捕获运行时错误,但在这种情况下,我收到编译时错误,因为调用函数试图传递字符串(模板 T 被设为字符串)。
PS: 我无法对这个结构进行任何更改,这意味着我什至无法更改参数的数量等。我只能在方法内部进行更改calcDifference()
。
c++ - c++中另一个类中的模板类实例化
我有一个模板类,当我在 main 中实例化时没有任何问题,但是当我尝试在另一个类中实例化它时会出现问题。有人可以告诉我解决方案吗
上面的代码编译没有任何问题。但
这段代码没有被编译。给我错误
main.cpp|19|错误:字符串常量之前的预期标识符| main.cpp|19|错误:字符串常量前应有 ',' 或 '...'|
谢谢, 哈里什
c++ - 具有不同 const 限定符的 2 种类型之间的转换
这是我要使用的代码的简短示例:
我收到此错误:
错误 C2664:“B::func1”:无法将参数 1 从“const int *”转换为“int *const &”
是一种在不更改函数声明且不使用 const_cast 的情况下解决此问题的方法吗?
编辑:
问题背后的一些信息
B
实际上是我写的一个容器类(比如说一个列表)A
是使用该列表的类func1
是一个需要查找元素是否在列表中的函数func2
是一个接收要从列表中删除的元素的函数
c++ - C ++模板类“没有适当的默认构造函数可用”
我在 C++ 中为链表创建了一个 Node 类:
在尝试 tp 初始化它时:
我收到此错误:
错误 C2512 '设备':没有合适的默认构造函数可用 Gym c:\users\amitm\onedrive\מסמכים\visual studio 2015\projects\gym\gym\node.h 7
第 7 行:
此外,如果需要,这是“设备”构造函数:
我该如何解决这个错误?我在网上看了一个多小时,找不到适合我的解决方案。
c++ - 为模板类定义 numeric_limits max 函数
我在为模板类定义函数 max 时遇到问题。在这个类中,我们不是将数字保留为简单的整数,而是在某些数字系统中作为数字向量。并且通过定义 numeric_limits 我需要返回基于定义的数字系统的最大数字的表示。
当我尝试返回具有最大表示的类时,我遇到了很多错误,但它在返回整数时有效。
我的模板类:
在 .h 文件的末尾我有这个:
我已经用 const 和 constexpr 试过了,但它不起作用。我不知道如何摆脱这个错误:
这就是我主要尝试做的事情:
这是我的作业,所以不要评判这样做的方式,因为这是我老师的选择,我希望我能相当全面地提出我的问题。