組み込み環境でオブジェクトの C 配列を初期化する方法

Barbara Streisand
リリース: 2024-11-06 17:21:03
オリジナル
987 人が閲覧しました

How to Initialize C   Arrays of Objects in an Embedded Environment?

C 配列のコンストラクターの初期化

C でのオブジェクトの配列の初期化は、それに類似した配列初期化構文がないため、困難になる場合があります。配列以外のオブジェクトで使用できます。

次の配列以外の例を考えてみましょう:

struct Foo {
    Foo(int x) { /* ... */ }
};

struct Bar {
    Foo foo;

    Bar() : foo(4) {}
};
ログイン後にコピー

この例では、Bar コンストラクターは初期化構文 : foo(4) を使用して foo メンバー オブジェクトを初期化します。 ).

ただし、配列の場合は状況が異なります。次の構文は正しくありません:

struct Foo {
    Foo(int x) { /* ... */ }
};

struct Baz {
    Foo foo[3];

    // ??? I know the following syntax is wrong, but what's correct?
    Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};
ログイン後にコピー

解決策

残念ながら、C 98 のコンテキストでは (組み込みプロセッサによって提案されているように、ここではこれが当てはまるようです)制限)、コンストラクター初期化子を使用して配列メンバーの初期化を実現する方法はありません。回避策は、配列メンバーにデフォルトのコンストラクターを提供し、コンストラクター内で必要な初期化を実行することです。

例:

struct Foo {
    Foo() : value(0) { /* ... */ }  // Default constructor with a default value

    Foo(int x) { /* ... */ }
};

struct Baz {
    Foo foo[3];

    Baz() {
        foo[0] = Foo(4);
        foo[1] = Foo(5);
        foo[2] = Foo(6);
    }
};
ログイン後にコピー

このアプローチは直接初期化ほど洗練されていませんが、組み込み環境では利用できない可能性のある外部初期化メソッドや STL 構造に頼ることなく、オブジェクトの配列を作成および初期化できます。

以上が組み込み環境でオブジェクトの C 配列を初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!