問題タブ [data-members]
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++ では、クラスのオブジェクトを定義せずにクラスのデータ メンバーを使用できます。これstatic
には、次のコード サンプルのように、パブリック セクションでそのデータ メンバーを変数として定義します。問題は、なぜ/いつこれをしたいのですか? どうすればそれを行うことができますか?
c++ - C++: サイズが不明なクラス内の静的配列
私はこれに精通していませんでした。Googleで検索しましたが、答えが見つかりませんでした。だから、私の質問を投稿してください。次のプログラムを試してみました:
MSVS 2010 および g++ 4.8.1 では、警告なしで正常にコンパイルされます。また、C++14 コンパイラでも問題なくコンパイルされます。(ここでライブデモを参照してください。 ) では、C++ 標準はこれについてどこで述べているのでしょうか? テスト クラスの char 配列の宣言から static キーワードを削除すると、g++ でコマンド ライン オプションISO C++ forbids zero size array
を使用し、MSVS 2010 コンパイラでオプションを使用すると、コンパイラでエラーが発生します。だから、私の質問は次のとおりです。-pedantic-errors
/Za
error C2133: 'test::a' : unknown size
1) 未知のサイズの静的配列の使用は何ですか?
2)後でそれらのサイズを指定してその配列要素にアクセスするにはどうすればよいですか? 私は本当に混乱しています。
3) static キーワードを削除するとコンパイル エラーが発生するのはなぜですか?
誰かが簡単な例を使って説明してくれるとよいでしょう。
ありがとう。
php - クラス データ メンバの関数
PHP (v 5.5.9-1ubuntu4.11) では、関数または関数の配列でデータ メンバーを初期化することはできません。これら 2 つは、以下に基づいて PHP 構文に違反していますsyntax error, unexpected 'function' (T_FUNCTION), expecting ')'
。
と:
それにもかかわらず、これは許可されています:
クラスのデータ メンバーに関数を割り当てることができないのはなぜですか?
再現性を容易にするために:
c++ - データ メンバーを構造体の中に入れますか?
保守されていない古いソフトウェアを最新のものにしていますが、十分に説明できていない独特のパターンに気付きました。
問題のコードは C++ で書かれています。通常、データ メンバーを見ると、クラス宣言内に public または private メンバーとして存在します。私が現在取り組んでいるコードでは、ほぼすべてのクラスが次のように追加の構造体内にデータ メンバーを格納します。
残念ながら、このコードの元の管理者には連絡が取れません。ただし、すべてのクラス (約 100 のクラスがあります) はすべてこれを行います。MyClassData 構造体はクラス宣言の先頭以外では使用されないため、理由がわかりません。
誰かが C++ クラスをこのようにレイアウトすることを選択する特定の理由はありますか? 構造体をデータメンバーとして使用したい理由があることは理解していますが、理解できないのは、すべてのデータメンバーをこのような単一の構造体に詰め込み、その構造体で他に何もしない理由です。 . メソッド内で何にアクセスしているのか、どのようにアクセスしているのか(すべてが最初にclassDataを通過する必要があるため)のあいまいさを取り除くかもしれないと思いますが、それ以上はわかりません. これには、まだ解明されていない技術的な理由があるのではないかと考えています。
c++ - std::function はデータ メンバーへのポインタを格納できますか?
cppreferenceから、次のことがわかりました。
クラス テンプレート std::function は、汎用のポリモーフィック関数ラッパーです。std::function のインスタンスは、任意の Callable ターゲット (関数、ラムダ式、バインド式、またはその他の関数オブジェクト、メンバー関数へのポインター、データ メンバーへのポインター) を格納、コピー、および呼び出すことができます。
なぜ a がそのようなポインターを格納できるのかがわかりませんstd::function
。また、その機能について聞いたことがありません。
それは本当に可能ですか、私は何かを逃したか、それはドキュメントのエラーですか?
そのような場合、どのようにoperator()
振る舞うべきですか?ドキュメント
からのように:
パラメーター args を使用して、格納されている呼び出し可能な関数ターゲットを呼び出します。
とにかく、ここで呼び出す呼び出し可能な関数ターゲットは格納されていません。私が間違っている?
正直なところ、そのような関数の正しい構文を理解することさえできません。そうでなければ、それをテストするために例を書いたでしょう。
次のテンプレートを使用して、データ メンバーへのポインターを定義するにはどうすればよいでしょうか?