问题标签 [class-template]

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 回答
207 浏览

c++ - 为什么在 operator< 存在时定义 lt?

一段向量操作的代码包含这些类模板定义:

但为什么?它没有使用额外的异常处理,它依赖于T已经具有operator<和的类的对象operator>。使用运算符不是一样容易/更容易吗?还是应该使用模板类进行比较?

0 投票
1 回答
372 浏览

c++ - C++ 类模板继承调用构造函数/析构函数

我有以下课程。

并在 cpp 文件中

然后我有一个类:

带有cpp文件

从这里我收到错误消息:

Actors::DivideConquerTask<int>::~DivideConquerTask() undefined reference to对Actors::DivideConquerTask::DivideConquerTask(int, int)的未定义引用

其中 Actors 是在其中声明/定义所有内容的命名空间。

这里有什么问题?为什么它找不到我的基本构造函数/析构函数?

注意:我省略了一些可以正常工作的琐碎功能。

0 投票
1 回答
372 浏览

c++ - 模板类中 boost::unordered_map 中 boost::tuple 的问题

我编写了一种方法,可以在 C++ 中自动插入昂贵的 2D 函数。我现在试图让类接受一个函数指针,以便可以插入任何函数。为此,我似乎需要一个模板类,以便我可以为每个需要评估函数指针的对象模板化它。在我意识到我需要在头文件中完全定义类之后,这部分并不是那么糟糕,以便链接器可以为每个需要的对象模板化类。现在擦。

在类中,我使用 boost::unordered_map 来存储函数评估,这样我就不会不必要地调用该函数。在插值过程中,我细化了一个网格,以便它充分描述它(基于它的曲率)。我在局部细分网格,因此如果我的原始点位于 x=0, .5, 1,下一组可能是 x=0, .25, .5, 1,我只需要在x = .25 第二次通过。这是使用硬编码函数自行工作,而不是动态函数指针。

我遇到的麻烦是为 boost::tuple 定义必要的运算符和 hash_value 函数。如果我把它放在标题中,它们会被定义多次(对于标题的每个包含)。如果我尝试将其编译为对象并将其链接到其中,则链接器无法找到定义。我需要在课堂上引用的两个定义:

在我的标题中,我有一个结构和 typedef:

就在我的模板类之上,带有 ommitions:

如何使 operator== 和 hash_value 方法对类可用,而无需多次定义它们?我守着头文件。我是一个 c++ 新手,所以希望它是我没有得到的简单的东西。谢谢!

0 投票
1 回答
1524 浏览

c++ - 结构后的尖括号

我在理解 C++ 代码中的以下行时遇到问题:

struct strVar 后面的尖括号是什么意思?我以前从未听说过这种风格。

该行没有用我的编译器编译,但它来自一个正在运行的软件,所以它在某种意义上一定是正确的。

0 投票
2 回答
1013 浏览

c++ - 如果不使用静态成员,是否在模板类中初始化静态成员变量?

如果不使用静态成员,是否在模板类中初始化静态成员变量?我用它来注册类型。

我找到了一种方法来测试它。它打印 1 而不是 2。 regist() 不被称为 abd 静态成员未初始化。我的测试是在 VC110 编译器上进行的。而且我也在网上测试

0 投票
0 回答
260 浏览

c++ - SFINAE 中使用的别名模板导致硬错误

我想enable_if在另一个类模板中使用在一个类模板中定义的启用程序(的别名模板)。它看起来像这样:

这适用于 SFINAE。但是当我在第二类中添加另一个别名模板时

并将此启用程序用于 SFINAE,替换(正确)失败但对于 g++4.8.0 和 4.8.1 出现硬错误。clang++3.4 只给出一个软错误并且 SFINAE 有效。

#if 1产生:

但是对于using X = B< T >;在 g+4.8.0 上生成错误:

如何将启动器从一个类模板“导出/导入”到另一个?

为什么 SFINAE 不起作用?

0 投票
0 回答
116 浏览

c++ - 类模板中不同上下文中启用程序的不同行为

为什么行为如此不同?#if 1版本成功(这很奇怪)编译并产生预期的输出到stdout,但版本#if 0没有:

这会产生一个错误(根据我对这两种情况的期望(实际上),本质上“B”是私有的):

g++ -v输出包含以下行:

我希望BX.

该问题仅在类模板中异常发生,而对于纯类则没有(这里我们有两个相同的问题,因为两个变体都不必编译,但它们都已编译)。

0 投票
2 回答
10829 浏览

c++ - C++ - 定义类模板(头文件/源文件)

0 投票
2 回答
199 浏览

c++ - 从函数指针作为模板参数的类型推导

我是模板新手,在使用它们时遇到了一些问题。我在下面发布了我无法编码的代码。在如何做这件作品方面需要帮助

我需要将函数指针作为模板参数传递给测试器类,并将 TClass 实例作为参数传递给构造函数。在构造函数中,函数指针将用于将 testFunc 绑定到测试器类的成员变量,该成员变量是函数指针。然后,当测试器类被销毁时,将调用 testFunc。无法解决模板的类型扣除

0 投票
1 回答
87 浏览

c++ - 继承到子类时可以指定类模板的类型吗?

说,我有一个父类模板。并想在其上建立几个子类。每个子类都是特定于类型名的。那么我可以指定他们在继承父类模板时使用的类型名吗?

类定义示例:

这段代码正确吗?