问题标签 [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.

0 投票
2 回答
51 浏览

c++ - 有没有办法检查模板是什么数据类型?

假设我有以下代码:

有可能以某种方式做到这一点吗?如果没有,你能推荐一种方法来完成同样的事情吗?

0 投票
0 回答
55 浏览

c++ - 私有静态数据成员+模板类

我有这个代码:

在 ah 文件中:

在 a.cpp 文件中:

我有另一个名为test.cppwhich的文件#includes a.h并使用它的代码。

起初我在 CASTS 中有一个map静态私有数据成员,并在.a.cppa.cppa.h

然后我遇到了另一个问题,我无法在 cpp 文件中初始化 map(CASTS 类的私有静态数据成员),因为我开始获取multiple definition error. 因此,我尝试将Class_Hierarchy其映射为公共数据成员,并Class_HierarchyCASTS类中创建一个静态实例以使用其映射,但我得到了undefined reference to CASTS::classHierarchy.

我想不出这两个问题的解决方案,如何将模板类保留在头文件中并在 CASTS 类中有一个静态成员?

现在我唯一的错误是undefined reference toCASTS::classHierarchy'`。

编辑:

我对每个成员函数都有多重定义错误,所以我在a.cpp文件中添加了#include 保护。

0 投票
1 回答
463 浏览

c++ - 如何初始化使用其他模板类的模板类成员?

我无法正确设置和访问类的成员函数。该节点类用于构建最大堆树。但是,当树被初始化时,我得到的是垃圾数据,而不是我初始化它的内容。

这是构建我的堆树的类。我已经尝试过在构造函数中设置初始化,但我仍然收到垃圾数据。此外,我将构造函数设置为采用整数,但是当我在驱动程序中创建树时,它不会让我为其添加一个参数来启动该大小的数组。

0 投票
2 回答
364 浏览

c++ - 如何调整动态模板数组的大小?

我有一个动态模板数组作为我班级的成员。但是,我无法在构造函数或任何其他函数中调整数组的大小。我对语法感到困惑。这是代码:

该数组是HeapNode<Type>HeapNode 类中包含的对象数组。这是 HeapNode 类的构造函数:

0 投票
3 回答
62 浏览

c++ - 具有特殊功能的拉开功能类型

这个问题的答案使用类模板挑选出一个函数类型:

当我研究这里正在做的事情时,我试图重写function_args. 我试图使用一个函数来做到这一点,以消除对decltypeargs模板的需求。但发现自己陷入了不正确的语法:

我的希望是打电话decltype(myTry<decltype(foo)>())来获取tuple类型,而不是打电话decltypeargs<decltype(foo)>。有没有办法通过函数声明来做到这一点?

0 投票
2 回答
733 浏览

c++ - 指针模板数组c ++?

大家好,在我的 c++ 程序中,我有四个类(A、B、C、D)

  • A 是基类
  • B 继承自 A
  • C 继承自 A
  • D 继承自 B

它们都是模板类template<class Type>,每个都有一个 print 方法来打印它的私有成员和它继承的类的私有成员。

因此 B 将打印 B 私人成员和 A 私人成员,C 将打印 C 私人成员和 A 私人成员,D 将打印其私人成员和 B,A 私人成员。

在主函数中,我想为类 A 创建一个指针数组,每个类的对象有 3 个位置,然后我想循环每个对象的打印方法。

问题是当我将类更改为模板类时,我收到一条错误消息“我的类没有构造函数”;但是他们确实有。

这是我的代码请帮助(注意我评论了错误发生的地方):

0 投票
2 回答
549 浏览

c++ - 模板 typedef 不是类或命名空间名称

我正在编写一个模板类,它的行为应该像一个容器。内部数据是指向泛型类的智能指针向量T

标题

来源

我对C++中的模板类非常陌生,并且有点卡在ERROR LINE 1

错误 C2653:“v_p_elements”:不是类或命名空间名称

所以我评论了这个begin()方法,但在ERROR LINE 2处,它因同样的错误而停止。

现在似乎很清楚,由于v_p_elements在类内部进行了类型定义,因此可能无法将其导出到外部世界。但现在我要问的是整个事情是否可能,或者我只是误解了什么。

0 投票
2 回答
874 浏览

c++ - 可变参数模板类:是否可以为每个可变参数模板参数实现一个唯一的成员函数?

我正在使用访问者模式来实现反射,而不依赖于 RTTI。我的问题是:

我想实现一个访问者,它可以将派生自同一个 BaseItem 类的不同类 DerivedItem1、DerivedItem2 等转换为这个 BaseItem 类。

基类和派生类之一如下所示:

访客类:

像这样实现 BaseVisitor 是不可能的,因为DerivedItem::visit(BaseVisitor)它不会将自己转换为它的 Base 类并且BaseVisitor::handle(BaseItem &v)永远不会被调用。

我想将访问者实现为模板类,将基类和所有派生类作为模板参数,如下所示:

是否有可能使用 C++ 让编译器自行生成此成员函数?

0 投票
1 回答
54 浏览

c++ - c++中模板类的接口和继承

我对使用模板类继承的项目有疑问。这个想法是让代理具有指向 msgtype 的指针。msgtypes 可以不同,这就是模板类进入游戏的原因。这个想法是通过接口类存储不同的消息类型。要使用 msgtype 实例初始化 Agent 中的接口指针,我需要包含 #include "msginterface.h" 和 #include "msgtype.h"。不幸的是,如果我只包含“msginterface.h”,项目编译得很好。但是,如果我在初始化所需的 Agent.h 中添加 #include "msgtype.h"。我得到这个疯狂的错误:

我得到的错误是:

错误:“<”之前的预期模板名称 令牌类 Msg:public MsgInterface{ ^ /home/Catkin/src/template_class/src/msg.h:10:30: 错误:预期 '{' before '<' 令牌/home/Catkin/src/template_class/src/msg.h:10:30: 错误: '<' 之前的预期 unqualified-id 令牌

你知道这个错误的原因是什么吗?

可以使用以下代码重现该错误:

//main.cpp

//代理.h

//msginterface.h

//msg.h

//msgtype.h

0 投票
1 回答
51 浏览

c++ - 模板类如何匹配

我尝试理解enable_if实现,它是一对模板类。什么我不明白,为什么enable_if<true, int>不匹配第一个?这是怎么决定的?