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

c++ - 类模板构造函数中的 SFINAE

我正在尝试使用模板和 SFINAE 来做一些事情,我是其中的初学者。我正在浪费大量时间来完成每件最简单的事情。你能帮我理解它是如何工作的吗?

C< T , Ts... > 的构造函数采用 A< U > 或 B< U > 的 T 参数,但在这两种情况下具有不同的行为。我无法向你展示我试图这样做的一切。这是在我看来最不愚蠢的方式。

注意:我使用的是 g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1。我应该升级它吗?

谢谢

编辑:有关更多详细信息,我还尝试了(除其他外):

很抱歉,但我从未设法运行您的解决方案。我终于发现:

0 投票
2 回答
5965 浏览

c++ - c++11继承模板构造函数

我发现构造函数继承的语法有点奇怪。下面的例子效果很好,但我不明白为什么我需要指定using sysTrajectory::sysTrajectory而不是using sysTrajectory<Real>::sysTrajectory<Real>从类模板继承时?后者给出以下错误:expected ‘;’ before ‘&lt;’ token using sysTrajectory<Real>::sysTrajectory<Real>;

主要的 :

0 投票
0 回答
57 浏览

c++ - 第一次创建模板类的问题

我一直在阅读有关创建模板类的内容,我想我拥有它.. 好吧,除了一个令人讨厌的错误之外,我想不出!

这就是我到目前为止所拥有的:

这会产生一个错误:

注意:我使用的是 Qt,所以如果您不熟悉它,那么可以将 qDebug() 和 std::out 或类似的以及 QByteArray 视为 CString 或类似的。

我看过很多例子,我的看起来是一样的。如果我将构造函数的实现移动到头文件中(如下所示),那么它没有问题......:

所以我不确定我在这里做错了什么......

非常感谢任何帮助!

0 投票
1 回答
305 浏览

c++ - 从 C++ 中的模板类派生非模板类时的问题

我正在尝试从指定我需要的女巫类型的模板类继承一个非模板类

我的代码是这样的:

基类的头文件(更新):

派生类的头文件和代码:

“sf”指的是使用 SFML 库的命名空间。我正在使用使用 cmake 从源代码编译的 SFML 2.0

(有关更多信息,您可以查看:http ://www.sfml-dev.org/ )

当我尝试使用类似于此的命令编译这些代码时:

我收到一些链接器错误,告诉您:

此外,我使用“g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3”作为启用 C++11 的 C++ 编译器。

0 投票
1 回答
69 浏览

c++ - 模板类非模板化方法参数

我有一个使用模板的类。它是这样的:

请注意func. 两者都会编译(当然,不是同时编译),但哪一个是正确的,或者没关系?首先,我指定class a了参数...在第一种情况下,可以使用不同的类型代替 T... 例如,我可以这样做:

我猜答案是“否”,因为它无法编译!

在第二种情况下,很明显参数必须具有相同的模板类型。

由于我上面讨论的内容,我猜编译器实际上解释a<T> func(a arg);a<T> func(a<T> arg);. 我对么?

0 投票
1 回答
1114 浏览

c++ - 为什么这个非常简单的构造函数会导致段错误?

这很尴尬,但我对我的 C++ 有点生疏了,而且对于我的生活,我不明白为什么这段代码会导致分段错误。奇怪的是,几次迭代前它似乎工作正常。我什至不知道我现在在做什么不同。

它基本上是用于容纳三个对象的模板类对象的构造函数。我在构造函数实现的第一行(我将 a 分配给 x*)的第一行遇到了段错误:

VecXd.hpp:

测试.cpp:

我已经尝试了一些变化,包括

x* = a;

x = new(a);

我试过让这个功能像这样工作:

VecXd(T & a, T & b, T & c);

但是它不会让我通过使用来调用它:

VecXd<int>(1,2,3);

非常感谢您的宝贵时间,非常感谢!

0 投票
1 回答
131 浏览

c++ - 使用迭代器模板类作为函数的参数

我不明白为什么将这一行称为复制构造函数,尽管我的构造函数有一个参数。专门为此设计编写的 arguments 构造函数参数。我发现的关于类似问题的所有内容都是 typename 的使用。但这并没有解决我的问题。

在哪里

错误:

0 投票
1 回答
357 浏览

c++ - 如何在具有动态大小数组的模板类中重载 operator=

我是使用 C++ 制作自己的模板类的新手,在网上搜索了几个小时的答案并玩弄了函数及其参数后,我放弃了。我在使用以下类“=”运算符时遇到了运行时问题:

在 matrix.h 中:

当我去测试这个时,编译和链接运行顺利,没有错误,我得到一个完全有效的打印。但是当试图将一个矩阵分配给另一个矩阵的值时,程序崩溃并显示消息“matrix_test 已停止工作”。这是我在 matrix_test.cpp 中的测试代码:

在此先感谢您的帮助!

0 投票
1 回答
748 浏览

uml - 具有本机 UML 类型的模板类和模板类的 OCL 约束

我有两个关于同一个 UML 类图的问题。第一个是关于如何使用 UML 原生类型对模板类建模。第二个是关于如何处理 OCL 约束中的模板类。

问题一:模板类

我想为间隔使用模板类并使用 UML 标准表示它。间隔必须可用于整数和浮点数。到目前为止,我发现的最佳方法如下:

迄今为止找到的最佳解决方案

这里的想法是有一个模板类,参数T是类的超IntegerFloat

我看到的问题是我需要重新定义 UML 的基本类型以便对它们进行分组。我想知道是否有一种干净的方法来定义模板类并说它T是类型integerfloat(这里是 UML 的原语)。

问题 2:模板类的 OCL 约束

我的问题的第二个方面是我希望能够添加 OCL 约束来说明我的间隔必须包含至少 2 个元素。问题是规则必须根据T前面类图中的绑定不同而不同。

对于花车:

对于整数:

So I need to find a way in OCL to say that some rules only apply when T is bound to Integer, and others when it is bound to Float. I am not an expert in OCL, and I couldn't find any helpful information, so I'm asking for some help.

Thanks in advance,

Bastien.

0 投票
1 回答
114 浏览

c++ - Link error when I put template class with non-template classes in same cpp file - C++

I have a link-time problem when I include a templated and non-templated class in the same .cpp file.

I went through the C++ FAQ 35.13,35.14,35.15 and it doesn't solve the problem.

http://www.parashift.com/c++-faq-lite/separate-template-class-defn-from-decl.html

I'm using Xcode 5 with clang.

Here's the example

barfoo.h

Here's the cpp file:

barfoo.cpp

The error is

clang: error: linker command failed with exit code 1 (use -v to see invocation)

But when I remove the bar class, the error disappears, can anyone tell me why it generates this error?

Put the definition in the header file could solve the problem, but it may cause another problem that is code bloating, does anyone can give another solutions?