問題タブ [forward-declaration]

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 投票する
3 に答える
9038 参照

javascript - try ブロック内で定義する前に Javascript 関数を使用できないのはなぜですか?

hereで説明したように、関数定義は定義する前に使用できます。しかし、コードのセクションが try ブロックでラップされるとすぐに、これは当てはまりません。

これにより、「Hello world」が表示されます。

しかし、これは "ReferenceError: hello is not defined" を表示します:

したがって、関数宣言に関して、try ブロックには明らかに「特別な」何かがあります。この動作を回避する方法はありますか?

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

c++ - この循環型定義を破るには?

いくつかの型を宣言したいと思います(テンプレート化されたクラスの内部で、KキャッシングV動作を提供します):

もちろん、循環定義のため、これはそのままでは不可能です。でハックすることもできますが、void*前方宣言の魔法や、より良い仕事をする他のテクニックがあるかどうか疑問に思っています。

(はいboost::bimap、問題を回避することは承知しています)。

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

c - 前方のtypedef構造

これはヘッダーファイルにあります。

port.h

私の実装ファイルにはこれがあります:

port.c

そして、私のdriver.hファイルには、次のものがあります。

内部要素を非表示にしたいので、構造を前方宣言しました。

ただし、ヘッダーファイルのinitialize_portsで次のエラーが発生します。

構造体をパラメーターとして前方宣言して渡すことができるようにするにはどうすればよいのでしょうか。

アドバイスをありがとう、

0 投票する
3 に答える
43014 参照

c++ - C++ 前方宣言エラー

私はこのようなエラーがあります

廊下とレベルは...

わかる範囲でポインタがセットされているのですが、レベルから関数にアクセスしようとすると、ブーン!

ありがとう。

PS: 違いがある場合、コンパイラは gcc 2.95.2 です。

編集

完全なコードで更新されました。

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

c++ - STLコンテナの転送ヘッダー

ヘッダーには、ストリームへのポインターまたは参照のみが必要な場合に十分な<iostream>コンパニオンがあります。<iosfwd>後者は、をオーバーロードする場合の一般的なシナリオoperator<<です。

STLコンテナ用のそのようなヘッダーはありますか?<vector>STLコンテナを参照する関数をいくつか定義したいのですが、、、など<list>を含めたくありません<set>。al。それらのタイプへの参照を持つことができるように、全体として。この問題に対する標準、ブースト、またはその他の解決策はありますか?

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

c++ - new キーワードを使用した前方宣言と型名

タイプ b の新しいポインターを宣言するクラス a で、以下のエラーが発生します。助けてください。

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

c++ - Boost::BGLテンプレート<->クラスの循環依存を解決するには?

Boost Graphics Library の adjacency-list の使用に問題があります。循環依存の問題のようです: クラス A を使用するテンプレートの typedef T があります。さらに、A は型 T のオブジェクトへのポインターを格納します。コンパイラは、T が型に名前を付けていないことを教えてくれます。

以下は、より具体的なファイルの抜粋です。

この依存関係/包含順序の問題を解決するにはどうすればよいですか?

別の編集: edge_descriptor の型は int のようなプリミティブ型である可能性があるという考えがありました。Lane の edge_descriptors を単純な int 変数に置き換えることができ、tie.hpp 内の graphdefinitions.hpp のインクルードを削除できたので、これで問題は解決したはずです。残念ながら、私の考えはひどいものでした。別の解決策を見つけなければなりません。Edge_descriptor タイプは理由があるようです...

0 投票する
3 に答える
20678 参照

c++ - 何ですかヘッダ?

<iosfwd>ヘッダーは何に使用されますか?なぜそれが必要なのですか?

例はありますか?

0 投票する
3 に答える
16688 参照

c++ - 不完全なタイプのオブジェクトを削除する

これは私に考えさせました:

デストラクタが表示されdelete pているかどうかさえわからない場合、どうすればよいでしょうか。Xg++ 4.5.1 では、次の 3 つの警告が表示されます。

そして、それは言います:

注:クラスの定義時に宣言されていても、デストラクタもクラス固有の演算子 delete も呼び出されません。

うわー... g ++のように、この状況を診断するためにコンパイラが必要ですか? それとも未定義の動作ですか?

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

c++ - 別のヘッダーで宣言された配列オブジェクトを指すポインタを返すメソッド、

絡み合った 2 つの問題に少し行き詰まっています。

  • まず、ヒープ上のオブジェクトへのポインターの配列が必要です。(別のヘッダーで宣言されているオブジェクト)

  • 2 つ目は、これらのオブジェクトの 1 つへのポインターを返すメソッドを作成することです。

私の現在のコードは、少し手探りした結果であり、完全に宣言しないと戻り値の型として "bar" を使用できないため、失敗します。しかし、他に問題を解決する方法がわかりません。"getBar" を関数へのポインターにしようとしましたが、メンバー メソッドでなくても **barArray にアクセスする方法がわかりません。

どんな助けでも大歓迎です:D

私のコード:

foo.h

foo.cpp

bar.h