问题标签 [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 回答
234 浏览

c++ - 模板类作为模板参数默认参数

今天我尝试将模板类传递给模板参数。我的模板类std::map有四个模板参数,但最后两个是默认参数。

我能够获得以下代码进行编译:

不幸的是,我不想一直传递最后两个参数。真的是写的太多了。如何在此处使用一些默认模板参数?

0 投票
1 回答
7431 浏览

c++ - 正确前向声明完全专业化的模板类

假设我有以下一堆文件:

Generic.h:复杂的模板类

Special.h:定义提到的模板类的完全专用版本,简化了易用性。

Client.h:使用SpecialMap和定义前向声明的客户端。

Client.cpp:客户端代码可能知道Generic.h并且Special.h

主.cpp:

GenericMap表示没有前向声明的模板类。对于某些用户来说,完全专用SpecialMapGenericMapshould 版本就足够了,为了方便使用,这里使用了 a typedef

现在在Client内部使用SpecialMap,但头文件应该只为SpecialMap.

不幸的是,以下文件将无法编译。不知何故,张贴的前向声明就足够了。什么是正确的?

对于冗长的列表,我很抱歉,但这是我能想到的最小的非工作示例。

0 投票
1 回答
608 浏览

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

我有一个看起来像这样的模板:

f在里面使用SomeAction(其实f是类成员,不过我觉得没关系)。

问题是:这可以通过从模板参数列表中删除'typename T'并让编译器推断出该类型来改进吗?

谢谢!

0 投票
1 回答
1582 浏览

c++ - C++ 类模板作为函数返回类型

我正在做一个小项目来了解 C++ 模板是如何工作的。基本上,我有类似的东西:

当我尝试编译我的程序时,我收到一个错误(错误 C2143,在 '<' 之前缺少 ';')。是因为我不能将 MyOperation 作为函数操作()的返回类型吗?

先感谢您。

0 投票
1 回答
53 浏览

c++ - 哪些成员继承自模板参数

如果我们有一个类模板

现在,如果我将类的对象声明Field

那么哪些成员函数是vector我的继承形式velocityField

0 投票
2 回答
28720 浏览

c++ - 模板 T 类数组

我的 C++ 课程中有一个(应该很简单的)作业。

下面是作业: 创建一个包含两个私有数据成员的类模板:T * 数组和 int 大小。该类使用构造函数根据输入的大小分配数组。有成员函数允许用户根据大小填充数组。此外,还有一个成员函数,用于对数组进行排序并显示排序后的元素。使用析构函数删除数组。开发 main() 来创建两个对象来调用成员函数。结果,第一个对象将保存其 double 类型的数组,而另一个将保存其 int 类型的数组。

这是我想出的,但出现了“分配不完整类型'T'”的错误:

不确定我的思维方式是否完全迟钝,或者我是否只是缺少一个小元素。任何帮助都很棒。

感谢@jblixr 和@user3655463 的帮助。在您的提示和帮助下,我想我已经解决了。如果其他人正在为此工作,这是我想出的供参考。

0 投票
1 回答
86 浏览

c++ - 为什么这个模板类不能正常工作?

该功能正常工作。我的意思是在“aux = arr1.get(i);”这一行 正在做它的工作,但是当我尝试在 main() 中读取 arr3 的元素时,前两个元素不是 0 和 1。程序显示的是其他大数字,例如 175243462 和 152614213。

0 投票
2 回答
438 浏览

c++ - Clion C++中友元函数的错误

0 投票
2 回答
870 浏览

c++ - 类模板的嵌套模板参数推导不起作用

这个问答中,我编写了一个小包装类,它提供对范围的反向迭代器访问,依赖于类模板的 c++1z 语言功能模板参数推导(p0091r3p0512r0

但是,进行嵌套应用Reverse不会产生原始的迭代顺序

实时示例(g++ 7.0 SVN 和 clang 5.0 SVN 的相同输出)

罪魁祸首似乎是类模板的模板参数推导,因为通常的包装函数确实允许正确嵌套

实时示例(g++ 和 clang 的输出相同)

问题:类模板的嵌套模板参数推导是否应该只工作“一层”深,或者这是 g++ 和 clang 的当前实现中的一个错误?

0 投票
0 回答
45 浏览

c++ - 类模板中的静态成员

发生问题时,我正在编写类模板以实现单例。

虽然在 .h 文件中有一个静态指针,但由于链接器问题(lnk 2001 和 lnk 1120 与 15)而无法编译。

我简化了我的代码以获得更容易理解的问题:

我的班级 SingletonTemplate.h(没有 .cpp 顺便说一句)

我在几篇文章中读到静态变量的进一步声明可以解决这个问题。我在我的函数之外添加了这个(但仍在.h中):

这样做解决了我的问题,但我不知道为什么。所以,如果有人可以向我解释这条线的目的是什么,那就太棒了。

提前致谢