问题标签 [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.
c++ - 关于 is_array 模板类评估的混淆
考虑以下程序(在此处查看现场演示。)
我知道不可能创建抽象类的对象。这里 T 是抽象的,所以不可能创建 struct T 的对象。但是考虑以下语句
为什么它给我一个错误?该语句仅检查给定类型是否为数组。这是否意味着如果 T 是数组并且静态成员的value
值计算为true
然后将创建对象数组?但是,为什么这里需要创建数组呢?如果我无法使用该数组,需要创建一个数组吗?这不就是浪费内存吗?
那么为什么下面的语句没有给出任何编译器错误呢?
我在这里理解错了吗?请帮我。
c++ - 具有依赖值的模板特化
使用模板来确定数组大小似乎很简单:
不过,我想做的是根据其他内容设置数组大小:
MyEnum 为 Hi 时如何将 N 设置为 10,而 MyEnum 为 Lo 时如何将 N 设置为 200?
我想做的是说
而不必说
这可能吗?
c++ - C ++:在模板类型中存在命名成员时在模板类中提供类函数?
我正在尝试执行以下操作:模板化类应该提供一些函数,这取决于它被模板化的类型是否包含具有给定名称的成员变量。例如,以下伪代码仅在模板结构/类具有名为“id”的成员时才应提供“printid()”:
围绕 SFINAE、traits、std::enable_if 和 StackOverflow 进行挖掘,我认为它可以以某种方式完成。但是我不知何故未能将 enable_if 与问题如何检测类中是否存在特定成员变量?:
任何帮助表示赞赏。
c++ - 在模板类中将对象作为重载 operator+ 的参数传递
我正在尝试将对象作为重载 operator+ 的参数传递(并且该类是模板类),但它给了我一个错误,其中指出:
这是我的课:
这是我的重载+方法:
我以为
作为参数列表就足够了。我究竟做错了什么?
在我的主体中,我只是制作了 2 个对象(第二个对象调用了复制构造函数),然后我尝试将它们加在一起。
c++ - 模板类注册构造函数失败,为什么?
在 C++ 程序中,尝试在我正在开发的类中使用模板会导致我的编译器没有注册在源代码中声明的类构造函数。
如果我删除模板,它编译得很好,但除此之外,在过去的一个小时里,我在可能出错的问题上没有取得任何进展(我尝试过在哪里以及如何声明模板以及命名空间语法)。
那么,请问我对 C++ 有什么不明白的地方吗?
rondel.h:
rondel.cpp:
c++ - 如何在这个涉及类模板的程序中调用单参数构造函数?
这是我为开始使用类模板而编写的代码。
这段代码一切正常,除了当我尝试使用像“3+C2”这样的整数值时它显示错误。如果在不使用模板的情况下考虑相同的代码 '3+C2' 调用友元函数 operator+(Complex a,Complex b) 并且 3 被复制到调用单参数构造函数的对象 a 中,并且 3 将被分配给实部复杂类。使用类模板时如何做到这一点?使用类模板时,如何将数字传递给 operator+() 函数而不是 Complex 对象时调用单参数构造函数?
c++ - 有没有办法将类的 this 指针保存到成员共享指针中
我有这样的结构:
Foo.h
Foo.inl
基本上我想要做的是使用 add 函数传递任何相同类型的任意对象。一旦元素计数达到 256 个元素并且传入的该类型的智能指针的内部数组被填充,我想保存这个类的实例化对象的当前实例并将其推送到向量中,并且传入的下一个对象属于新的或创建的下一个实例,但是所有后续实例仍然是原始对象的一部分。因此,当每个 256 数组都被填充时,可以说它就像一个链表,但它更像是一种链接效应。我只是坚持保存此实例的当前状态。
c++ - 我在 C++ 中创建了一个 List Container 类,但它没有按预期工作
所以首先我创建了一个结构来包含以下内容:
还有一个具有以下内容的类:
这是 main.cpp 的确切代码的链接:http: //pastebin.com/fHhsvd9A
所以在我的 main.cpp 中,我创建了一个 List 实例和一个 Node 指针:
然后我创建 F3D_model 类的两个模型类实例,并将它们添加到我创建的 List 实例中:
打印模型信息:
用于打印信息的代码:
(角度是 F3D_model 类中的公共变量)
一切看起来都不错。所以我有一个按键事件,我为模型的角度添加了一个值。
然后它再次打印值。
所以问题是,当我按下键时,它的打印结果是一样的,就好像我没有添加值一样。
但是当我按下它时它确实会在屏幕上移动模型,所以它实际上是在添加值。当我将类型从 F3D_model 更改为 int 并执行相同的过程时,它工作得很好。
所以我的问题是为什么当我使用 F3D_model 时它不起作用,我怎样才能让它起作用?
c++ - 为什么使用类模板时出现未定义的引用错误?
这两个类都在头文件中,这不是问题。出于某种原因,我的程序告诉我有一个未定义的引用错误。我不完全确定为什么会这样。
我有 2 个类的一个实现文件。这可能是错误的来源吗?
这是我的第一堂课
这是我的第二节课
这是我的实现文件
这是主文件
我不明白为什么我有一个参考错误,因为我确保我有警卫,并包含所有头文件。
是什么给了我未定义的参考错误?
c++ - 定义类模板的友元函数模板
我想定义一个类模板的函数模板。代码看起来像这样。
但它不会编译。与之前的问题相比,下面列出了不同之处。
- 函数模板的结果涉及类模板的另一个实例化。似乎必须在外部定义功能模板。但我不确定。
- 函数模板使用默认模板参数。因此,如果函数模板是在类之外定义的,则需要一个辅助函数模板。
编译错误g++ -std=c++1z
:
一种可能的解决方法,但也不正确。
错误: