问题标签 [unnamed-class]
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++ - 在 C++ 中使用位域前向声明匿名 typedef
我找到了 C++ 中 typedef 前向声明的答案(https://stackoverflow.com/a/2095798)。但我的情况是这样的:
并且我不允许更改任何内容,a.h
并且我想避免包含a.h
在b.h
. 在这种情况下,如何避免此错误或转发 declarte bah 的正确方法是什么?
比你!兹拉坦
c++ - 未命名命名空间中未命名类的实例
使用带参数的函子通常如下所示:
对于没有参数的仿函数,代码可能变成
但我更喜欢以下用法:
它具有以下优点:
- 更简洁
- 直接调用仿函数时更具可读性:
some_functor_without_params(i)
而不是some_functor_without_params()(i)
- 可与功能互换:
bool some_functor_with_params(int i) {return i == 42;}
我在头文件中通过以下方式实现了它:
我认为结构不需要名称,因为它没有用户声明的构造函数(也没有析构函数,也没有任何需要结构名称的东西)。我将对象放在一个未命名的命名空间中,这样每个编译单元都有自己的some_functor_without_params
,并且没有“双重定义”链接错误。
是否有任何性能损失或我看不到的任何其他缺点?
这种方法按预期工作,直到我在 Visual C++ 2013 中遇到一个非常奇怪的编译错误,在命名仿函数类型时消失了,即替换
和
错误只出现在 Debug 中,不在 Release 中,并且状态
在文件中xstring
,这里:
它看起来像一个编译器错误,你怎么看?
c++ - C ++利用点语法在“属性”(未命名的类)上调用函数
目标
我的目标是StaticLibrary::func()
使用点语法从 Environment 的属性(未命名的类)中调用。
例如:
env.bar.func();
我已经能够实现static_cast<StaticLibrary>(env.bar).func();
,很接近了,但是语法还是太繁琐了。
问题
可以推断出静态转换,还是可以重载某些运算符以获得所需的语法?
注意:我有一个不能
StaticLibrary
直接作为Environment
类的公共成员(对象、引用或指针)的约束。
错误
我目前收到错误(我理解,但为了完整起见粘贴在这里):
代码
下面的示例是我能提供的最精炼的代码版本。
注意:这必须与 GCC 兼容,而不是 Microsoft VC++
c++ - 可以将未命名的结构设为静态吗?
你能让一个未命名的结构成为一个类的静态成员吗?
javascript - named class expressions returning different values
I want to know why there is difference between the outputs of the following classes.
I have tried following code to get the class values in console. For one particular case(the last console) I am wondering how this is returning this value.
I am wondering about the last console console.log(rectangle3) value why it is returning this value as array with one element ie [Function: rectangle2]
c++ - 定义一个未命名的结构是否合法?
以下代码合法吗?:
这段代码只是定义了一个未命名的结构。我不打算创建这种类型的对象,也不需要以任何其他方式使用这种结构。它只是作为某些复杂宏扩展的副作用出现在源代码中。
尽管它没用,但我认为它没有问题。只是另一段可以编译然后完全优化的代码。
然而,在现实世界中,结果与我的预期完全不同:
GCC 8.3 报错:
错误:抽象声明器“<未命名的结构>”用作声明
Clang 8.0.0 也报错:
错误:匿名结构和类必须是类成员
警告:声明没有声明任何东西[-Wmissing-declarations]
只有 MSVC 2017 认为此类来源没有问题。
所以,问题是:谁是对的?标准中是否有明确禁止此类声明的相关引用?
编辑:
该项目使用 C++11。但 C++98、C++11 和 C++17 的错误消息是相同的。
javascript - JS无名类及其无名扩展类
Operation
class 创建一个像这样的数组,它在数组之前没有类名。
'Table' 类旨在成为继承Operation
' 构造函数的未命名类。
它可以正确继承,但是,它会extends
像这样使用不必要的标签创建数组。
是的,我不想用“扩展”的东西创建数组。
如何创建一个未命名的扩展类?
c++ - 多个未命名的嵌套类
如何在 App::grid 函数中访问 App::console_handler 而无需 console_handler 静态并保持 console_handler 一个匿名类的对象?
c++ - 如何从 C++ 中的未命名派生类调用非默认父构造函数?
在 C++ 中,如果直接创建对象,则可以将一次性结构和类声明为未命名:
未命名的类也可以从基类继承。例如,这对于从基本处理器接口创建不同“处理器”列表很有用。这里有一个简单的例子:
所以两者都Adder
成为Multiplier
接口的单一派生对象Processor
。但是,如果基础处理器具有更多结构并具有构造函数,那需要参数怎么办?让我们看看这个例子:
如何为此处理器创建一个未命名的子类,例如“加法器”。天真的尝试:
不幸的是失败了,因为未命名的类没有隐式生成的构造函数,可以接受"Adder"
作为它的参数。并且显式声明这样的构造函数也是不可能的,因为不可能在未命名的类中声明构造函数:构造函数的名称与类相同,但如果没有类名,则也没有构造函数名称.
我知道,有一些简单的解决方法:一个是毕竟给出一个名称(可能在命名空间中),然后用它来声明一个构造函数。人们也可能想使用一种init()
从 的构造函数中调用的虚方法,Processor
它完成了构造函数应该做的工作。但这不起作用,因为构造函数中的虚拟调用还没有到达派生类中的方法。但是,相反,调用init()
可以隐藏在未命名类的数据成员的初始化程序中。
但是是否有任何“纯”C++ 答案,它使未命名的类保持未命名并且仍然在构造函数中完成所有事情,这应该在构造函数中完成?