问题标签 [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.

0 投票
2 回答
3843 浏览

c++ - 未命名的结构可以继承吗?

以下看起来像一个编译错误:

然而,当使用 [1]时,它似乎可以工作:

在 C++ 中,未命名的结构可以继承吗?有什么有用的例子吗?


[1]免责声明:我并没有假装提供的示例很有用。我很少使用未命名的结构,当我这样做时,它们通常会捆绑一些内置的成员变量,以便为类提供更清晰的接口。这个问题来自于成员空间不需要命名结构的观察

0 投票
2 回答
169 浏览

c++ - 在 C++ 中使用位域前向声明匿名 typedef

我找到了 C++ 中 typedef 前向声明的答案(https://stackoverflow.com/a/2095798)。但我的情况是这样的:

并且我不允许更改任何内容,a.h并且我想避免包含a.hb.h. 在这种情况下,如何避免此错误或转发 declarte bah 的正确方法是什么?

比你!兹拉坦

0 投票
0 回答
83 浏览

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,这里:

它看起来像一个编译器错误,你怎么看?

0 投票
1 回答
829 浏览

c++ - C ++利用点语法在“属性”(未命名的类)上调用函数

目标

我的目标是StaticLibrary::func()使用点语法从 Environment 的属性(未命名的类)中调用。

例如:

env.bar.func();

我已经能够实现static_cast<StaticLibrary>(env.bar).func();,很接近了,但是语法还是太繁琐了。

问题

可以推断出静态转换,还是可以重载某些运算符以获得所需的语法?

注意:我有一个不能StaticLibrary直接作为Environment类的公共成员(对象、引用或指针)的约束。

错误

我目前收到错误(我理解,但为了完整起见粘贴在这里):

代码

下面的示例是我能提供的最精炼的代码版本。

注意:这必须与 GCC 兼容,而不是 Microsoft VC++

0 投票
2 回答
275 浏览

c++ - 可以将未命名的结构设为静态吗?

你能让一个未命名的结构成为一个类的静态成员吗​​?

0 投票
3 回答
24 浏览

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]

0 投票
1 回答
2559 浏览

c++ - 定义一个未命名的结构是否合法?

以下代码合法吗?:

这段代码只是定义了一个未命名的结构。我不打算创建这种类型的对象,也不需要以任何其他方式使用这种结构。它只是作为某些复杂宏扩展的副作用出现在源代码中。

尽管它没用,但我认为它没有问题。只是另一段可以编译然后完全优化的代码。

然而,在现实世界中,结果与我的预期完全不同:

GCC 8.3 报错:

错误:抽象声明器“<未命名的结构>”用作声明

Clang 8.0.0 也报错:

错误:匿名结构和类必须是类成员
警告:声明没有声明任何东西[-Wmissing-declarations]

只有 MSVC 2017 认为此类来源没有问题。

所以,问题是:谁是对的?标准中是否有明确禁止此类声明的相关引用?

编辑:
该项目使用 C++11。但 C++98、C++11 和 C++17 的错误消息是相同的。

0 投票
1 回答
54 浏览

javascript - JS无名类及其无名扩展类

Operationclass 创建一个像这样的数组,它在数组之前没有类名。

'Table' 类旨在成为继承Operation' 构造函数的未命名类。

它可以正确继承,但是,它会extends像这样使用不必要的标签创建数组。

是的,我不想用“扩展”的东西创建数组。

如何创建一个未命名的扩展类?

0 投票
0 回答
32 浏览

c++ - 多个未命名的嵌套类

如何在 App::grid 函数中访问 App::console_handler 而无需 console_handler 静态并保持 console_handler 一个匿名类的对象?

0 投票
1 回答
175 浏览

c++ - 如何从 C++ 中的未命名派生类调用非默认父构造函数?

在 C++ 中,如果直接创建对象,则可以将一次性结构和类声明为未命名:

未命名的类也可以从基类继承。例如,这对于从基本处理器接口创建不同“处理器”列表很有用。这里有一个简单的例子:

所以两者都Adder成为Multiplier接口的单一派生对象Processor。但是,如果基础处理器具有更多结构并具有构造函数,那需要参数怎么办?让我们看看这个例子:

如何为此处理器创建一个未命名的子类,例如“加法器”。天真的尝试:

不幸的是失败了,因为未命名的类没有隐式生成的构造函数,可以接受"Adder"作为它的参数。并且显式声明这样的构造函数也是不可能的,因为不可能在未命名的类中声明构造函数:构造函数的名称与类相同,但如果没有类名,则也没有构造函数名称.

我知道,有一些简单的解决方法:一个是毕竟给出一个名称(可能在命名空间中),然后用它来声明一个构造函数。人们也可能想使用一种init()从 的构造函数中调用的虚方法,Processor它完成了构造函数应该做的工作。但这不起作用,因为构造函数中的虚拟调用还没有到达派生类中的方法。但是,相反,调用init()可以隐藏在未命名类的数据成员的初始化程序中。

但是是否有任何“纯”C++ 答案,它使未命名的类保持未命名并且仍然在构造函数中完成所有事情,这应该在构造函数中完成?