問題タブ [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コンテンツ:

エラーメッセージは次のとおりです。

ローカルクラスについて、ISOIEC14882-2003は次のように述べています。

9.8ローカルクラス宣言

クラスは関数定義内で定義できます。このようなクラスはローカルクラスと呼ばれます。ローカルクラスの名前は、それを囲むスコープに対してローカルです。ローカルクラスは、囲んでいるスコープのスコープ内にあり、囲んでいる関数と同じように、関数の外部の名前にアクセスできます。ローカルクラスの宣言では、型名、静的変数、外部変数と関数、および囲んでいるスコープの列挙子のみを使用できます。

囲み関数には、ローカルクラスのメンバーへの特別なアクセス権はありません。通常のアクセスルール(11節)に従います。ローカルクラスのメンバー関数は、定義されている場合は、クラス定義内で定義されるものとします。

私は何か見落としてますか?

私には、コンパイラのバグのように見えます。GCCとMSVC2008はそれをうまくコンパイルします。ただし、実際にコールをインライン化するのか、リンクフェーズ中に2つのシンボルの1つを破棄するだけなのか疑問に思います。興味深いことに、このローカルクラスメンバー関数への呼び出しさえないことに気付くでしょう。

MSVC2005の回避策があるかどうか疑問に思います。私はMSDNでこの典型的な問題を検索しようとしましたが、あまり成功しませんでした。コンパイラの既知のバグのリストを見つけることさえできませんでした。


添付ファイル:LNK2005.zip

0 投票する
2 に答える
2251 参照

c++ - 関数で定義されたローカルクラスのメンバー関数のアドレスを取得する方法(C ++)

私は次のことを行おうとしています。関数内でローカルに定義されたクラスからメンバー関数のアドレスを取得します。

#2と#3を試してみてください。GCCを完全に混乱させます。私が何をしようとしているのかわかりません。試行#1は、「setupCallback(void(SomeUnitTest :: someTest():: NestedClass :: SomeFunction :: *)など)の形式のsetupCallbackが存在しないことを示す、より役立つエラーメッセージを生成します。これが試行#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によるC++によるオブジェクト指向プログラミングの「ローカルクラス」の概念を読んでいます(http://highered.mcgraw-hill.com/sites/0070593620/information_center_view0/)。

最後の行には、「囲んでいる関数はローカル クラスのプライベート メンバーにアクセスできません。しかし、囲んでいる関数をフレンドとして宣言することでこれを実現できます。 」と書かれています。

今、強調表示された部分をどのように行うことができるのだろうか?

ここに私が試していたコードがありますが、運はありません.

私はコードが間違っているように見えることを知っています。

0 投票する
4 に答える
558 参照

c++ - ローカルクラスのアクセス問題

local内部foo()コンパイルにアクセスしないのはなぜですか? OTOH 静的変数に簡単にアクセスして変更できますvalue

0 投票する
1 に答える
11877 参照

c++ - ローカルクラスのメンバーテンプレート

次のコードが与えられます:

g ++ 4.4(および g++-4.6 -std=gnu++0x)は次のように文句を言います:「ローカルクラスのメンバーテンプレートの無効な宣言」。

どうやらローカルクラスはテンプレートメンバーを持つことを許可されていません。この制限の目的は何ですか?C ++ 0xで削除されますか?

注:ローカルクラス自体をテンプレートメンバーにするのではなく、テンプレートにすると、次のようになります。

「エラー:テンプレート宣言をブロックスコープに表示できません」というメッセージが表示されます。