问题标签 [initialization-list]
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++ - 在静态初始化列表之前预处理变量
在将值传递给初始化列表之前,我想进行预处理活动。
(例如:做断言检查)
这是我的问题的一些背景:假设我有,
和
如果,在第 15 行;就在我调用初始化列表进行初始化之前b_obj (b_value)
- 到 input_value
我想操纵(检查或一些预处理) input_value 的值?
我如何实现这一目标?在 Java 中 - 会有类似初始化块的东西。
我已经想到了——
在 A 类和 B 类外部创建一个函数,在创建 A 的对象并使用“input_value”对其进行初始化之前,预处理该值。(但是,这违反了松散耦合的概念)
将父类“A的父类”添加到A类,使A类扩展它,在该类中进行预处理,因为父构造函数在初始化列表之前被调用?我没有尝试过,我不确定这是否是正确的方法。
c++ - 初始化列表中的 initializer_list
我想用std::initializer_list
.
第二个构造函数的 GCC 错误是
错误:数组必须用大括号括起来的初始化程序初始化
我想要的是像这样用 initializer_list 初始化新的 A 实例
并将其传递给基类。
c++ - 如何在另一个类中初始化我的对象数组
我正在制作一个游戏,其中我用于控制游戏对象的主要类是“inGame”。在“inGame”中还会有其他几个定制的类。
喜欢,
但现在可以说我想要 3 只鼠标。所以我想到了 m1[3] 或者可能是一个向量。
所以我尝试了以下方法:
即使我使用 std::vector m1 那么如何通过 inGame 默认构造函数进行初始化?它会在构造函数中写入吗?
哪种方法更好?主要我会做:
谢谢。
更新:
没有运气
在“m1 {”之后有一个错误,即“期望一个 )”。而 m1 { "}<--" 表示“期望一个 ;”
c++ - 如果成员是模板类,则在初始化列表中初始化某个类的成员
[已解决]:问题不在模板类初始化中,而是在模板类构造函数中使用未定义宏的代码特定问题。编译器错误并没有抱怨未定义的符号,而是(错误地)与 lambdas 相关。
我已经搜索了答案,但找不到确切的答案。最接近的答案在这里:C++ 调用显式模板构造函数,但我不确定这是否与我的问题完全相关。我的问题是,如果成员是模板类,我如何在初始化列表中初始化结构 B 的成员?
标题 ClassA.h:
标头结构 B.h:
编译器抱怨此错误(以及其他一些错误,如果需要,我可以发布它们):
错误 C3493:无法隐式捕获“数字”,因为未指定默认捕获模式
有没有办法做到这一点,或者一些解决方法?
提前致谢
c++ - 构造函数初始化列表中的约束检查
这种情况与如何对构造函数的参数进行约束有关,但略有不同。
您想要初始化一个不可默认构造的成员,但需要在构造它之前检查约束。
例子:
(请注意,这实际上只是一个示例。在这种特定情况下是否应该使用无符号整数是可以讨论的,但问题实际上是关于您要检查构造函数的一般情况)
您有以下课程:
构造函数必须检查整数参数的有效性:
注意 howBuffer
没有默认构造函数,而真正的构造函数是noexcept
,即没有办法捕获错误。
当整数参数为负时,已经有一个软管surface_
。在使用约束值之前进行约束检查会更好。可能吗?
c++ - 构造函数初始化列表中的 ADL
如何在构造函数初始化列表中启用 ADL?例如,假设我有一个bignum
具有命名空间级函数的abs
函数。现在我想写一个类Foo
,用传递给构造函数的实例的绝对值初始化它的成员;abs
如果存在,它应该使用命名空间级别,std::abs
否则:
无论如何,在类范围内都禁止使用声明,我不想“污染”命名空间。如何启用 ADL 以便它在构造函数初始化列表中工作?
c++ - 对于按值传递的重成员,构造函数的初始化列表中真的需要 std::move 吗?
最近我从cppreference.../vector/emplace_back读到一个例子:
我的问题:这std::move
真的需要吗?我的观点是,这p_name
没有在构造函数的主体中使用,所以,也许语言中有一些规则默认使用移动语义?
将初始化列表上的 std::move 添加到每个重成员(如std::string
, std::vector
)会非常烦人。想象一下数百个用 C++03 编写的 KLOC 项目——我们应该到处添加std::move
吗?
这个问题:move-constructor-and-initialization-list答案说:
作为黄金法则,无论何时通过右值引用获取某些内容,都需要在 std::move 中使用它,而无论何时通过通用引用获取某些内容(即使用 && 推导出的模板类型),都需要在 std:: 中使用它向前
但我不确定:按值传递不是普遍参考?
[更新]
为了让我的问题更清楚。可以将构造函数参数视为 XValue - 我的意思是过期值吗?
在此示例中,我们不使用 AFAIK std::move
:
那么,这里是否需要:
对我来说,这个局部变量是过期变量 - 所以可以应用移动语义......这类似于按值传递的参数......
c++ - C ++:在初始化列表编译正常但在启动时导致崩溃时找不到错误
我需要帮助来了解我在以下初始化列表中做错了什么。我正在使用它来初始化一个数据成员对象“RoomResources”,该对象在我的“Room”类中没有默认构造函数:
现在它编译正确,对我来说似乎没问题,但是当我启动我的程序时它会导致崩溃。我知道这个 Init List 是问题所在,因为我尝试不使用它并使用“RoomResources”对象代替默认构造函数,并且我的程序运行良好。
当我调试我的程序时,我收到以下错误:“在“e:\p\giaw\src\pkg\mingwrt-4.0.3-1-mingw32-src\bld/../mingwrt 找不到源文件-4.0.3-1-mingw32-src/src/libcrt/crt/main.c""
似乎某个对象正在尝试调用程序中尚不可用的某些代码或数据,但我在代码中看不到问题。非常感谢你花时间陪伴。
编辑:这是我的 GetAppRenderer 方法的定义:
c++ - 在 C++ 类中使用复杂函数初始化 const 成员
我有一个适用于 3d 网格的程序。这个网格有它自己的类对象 Grid,看起来像这样(简化版):
我现在想做的是能够将变量 i、j 和 k 设置为 const int,以避免在其他函数中意外地弄乱它们。然而,我不能轻易地将它们设置在成员初始化器列表中,因为它们必须从文件中读取。我一直在浏览现有的讨论,但我找不到关于这个问题的准确讨论。
有没有一种解决方案可以将它们设置为 const,并且仍然可以使用复杂的函数来检索数据?在我的实际应用程序中,当然还有更多的变量要读取,初始化后不允许更改。
c++ - 调用初始化列表构造函数的不同方式
考虑这个初始化器列表构造器使用的例子:
它们之间是否有任何差异(甚至是细微的差异)?
在一个大型项目中,您必须定义一个标准,您会选择哪种风格?
我更喜欢第一种风格,第三种风格很容易与使用 args 调用构造函数混淆。第一种风格对其他编程语言来说也很熟悉。