问题标签 [local-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 投票
6 回答
3946 浏览

c++ - c++ 本地类中的静态成员变量?

我知道我们不能static在本地类中声明成员变量......但原因尚不清楚。

所以请任何人都可以解释一下吗?

另外,为什么我们不能static直接在局部类成员函数中访问定义在函数内部的非变量,在该函数中定义了局部类?

在下面给出的代码中:

静态变量staticValue可以直接访问,而另一方面,argc参数 frommain不是....

0 投票
2 回答
1140 浏览

c++ - 内联非成员函数内的本地类使用 MSVC2005 生成 LNK2005

显然,MSVC2005 未能内联导致 LNK2005 的本地类的成员函数。

编译以下内容时遇到此 LNK2005 错误:

common.h内容:

foo.cpp内容:

bar.cpp内容:

LNK2005.cpp内容:

错误信息是:

关于本地课程,ISO IEC 14882-2003 说:

9.8 本地类声明

类可以在函数定义中定义;这样的类称为本地类。本地类的名​​称在其封闭范围内是本地的。本地类在封闭作用域的范围内,并且对函数外部的名称具有与封闭函数相同的访问权限。本地类中的声明只能使用封闭范围内的类型名称、静态变量、外部变量和函数以及枚举数。

封闭函数对本地类的成员没有特殊的访问权限;它遵守通常的访问规则(第 11 条)。本地类的成员函数应在其类定义中定义,如果它们被定义的话。

我错过了什么?

对我来说,它看起来像是一个编译器错误。GCC 和 MSVC2008 编译它就好了。但是,我想知道他们是否真的会内联调用,或者只是在链接阶段丢弃两个符号之一。作为一个有趣的注释,您可以注意到甚至没有调用这个本地类成员函数。

我想知道 MSVC2005 是否有解决方法。我试图在 MSDN 中搜索这个典型问题,但没有取得多大成功:我什至无法找到编译器的已知错误列表。


附件:LNK2005.zip

0 投票
2 回答
2251 浏览

c++ - 如何获取函数中定义的本地类的成员函数地址(C++)

我正在尝试执行以下操作:从函数中本地定义的类中获取成员函数的地址。

尝试 #2 和 #3 完全混淆 GCC,它不知道我要做什么。Try #1 会生成一条更有用的错误消息,指出不存在 setupCallback,其形式为“setupCallback(void (SomeUnitTest::someTest()::NestedClass::SomeFunction::*), etc) 这就是 try #3 的诞生方式。

我真的找不到很多关于函数内部定义的类的信息,有没有人知道正确的语法,并且可能有讨论这个主题的资源?

好的,看来这已经解决了,正如两位发帖人所指出的,本地类没有链接,它不能工作。现在知道了这一点,我发现这篇文章讨论了这个问题,对于遇到这个问题并偶然发现这个问题的任何人:http: //www.informit.com/guides/content.aspx? g=cplusplus&seqNum=420

编辑:setupCallback() 的说明,使用更常规的类的工作示例
编辑#2:更新措辞以将“嵌套”更改为“本地”。为 setupCallback 添加了更多详细信息。
编辑#3:添加了更多信息的链接。谢谢大家。

0 投票
7 回答
85952 浏览

java - 在 Java 的方法中使用类定义

例子:

我发现上面这段代码在 Java 中是完全合法的。我有以下问题。

  1. 在方法中拥有类定义有什么用?
  2. 是否会生成一个类文件DummyClass
  3. 我很难以面向对象的方式想象这个概念。在行为中具有类定义。可能有人可以用等效的现实世界例子告诉我。
  4. 方法中的抽象类对我来说听起来有点疯狂。但不允许任何接口。这背后有什么原因吗?
0 投票
2 回答
3197 浏览

c++ - 为什么 std::vector 不能采用本地类型?

我不会把 Foo 还给外面的世界。它只是我在函数中使用的一种临时类型。

0 投票
2 回答
694 浏览

c++ - C ++可以将本地类引用传递给函数吗?

我想知道是否允许以下​​行为:

谢谢

0 投票
1 回答
1308 浏览

c++ - 如何使用带有模板的本地类?

GCC 似乎不赞成使用本地类实例化模板:

VC没有抱怨。

应该怎么做?

0 投票
4 回答
5622 浏览

c++ - C++ 中的本地类

我正在阅读 Balagurusamy ( http://highered.mcgraw-hill.com/sites/0070593620/information_center_view0/ ) 的 C++ 面向对象编程中的“本地类”概念。

最后一行说“封闭函数不能访问本地类的私有成员。但是,我们可以通过将封闭函数声明为友元来实现这一点。

现在我想知道如何完成突出显示的部分?

这是我正在尝试但没有运气的代码,

我知道代码看起来是错误的,任何帮助都会很明显。

0 投票
4 回答
558 浏览

c++ - 本地类中的访问问题

为什么无法访问local内部foo()编译?OTOH 我可以轻松访问和修改静态变量value

0 投票
1 回答
11877 浏览

c++ - 本地类中的成员模板

给定以下代码:

g++ 4.4(以及 g++-4.6 -std=gnu++0x)抱怨:“本地类中成员模板的声明无效”。

显然本地类不允许有模板成员。这个限制的目的是什么?它会在 C++0x 中被删除吗?

注意:如果我让本地类本身成为一个模板,而不是给它一个模板成员:

我得到“错误:模板声明不能出现在块范围内”。