ポインター - C++ 初期化リストで配列を渡すにはどうすればよいですか?
巴扎黑
巴扎黑 2017-05-16 13:25:27
0
2
738

前述したように、以下のコードでは、X と Y は正常に構築できますが、A と B は、 'const int' の 'int []' への代入でエラー [Error] incompatibility type を報告します。

上記の状況で初期化リストに配列を渡す方法を教えてください。
こうして達成されました

リーリー

このようにして、メンバー変数は任意のサイズの配列で初期化されます。

リーリー
巴扎黑
巴扎黑

全員に返信(2)
黄舟

std::vector<int>,构造函数接受const std::vector<int> &arr,拷贝用this->o = arrを使用することをお勧めします。

いいねを押す +0
習慣沉默

この質問は次のように変換できます: どの仮パラメータ形式が初期化リストを渡すことができますか?

非テンプレート:

  • void foo(T), void foo(const T &),当T可以用初始化列表拷贝初始化时。即初始化T x = {...};合法。

  • void foo(std::initializer_list<T>)

テンプレート:

  • template <class T> void foo(std::initializer_list<T>)

  • template <size_t N> void foo(const T (&)[N])

  • template <class T, size_t N> void foo(const T (&)[N])、これは C++17 でのみ利用可能と言われていますが、一部のコンパイラはすでにサポートしています。

コードサンプルには、不可能な一般的な状況がいくつか含まれています。

配列メンバー変数の初期化: 初期化リストで配列メンバーを初期化する簡単な方法はないようです。コンストラクターの関数本体内で値を割り当てることをお勧めします。しかし、それはテンプレートを使用して実現できます:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート