前述したように、以下のコードでは、X と Y は正常に構築できますが、A と B は、 'const int' の 'int []' への代入でエラー [Error] incompatibility type を報告します。
上記の状況で初期化リストに配列を渡す方法を教えてください。 こうして達成されました
このようにして、メンバー変数は任意のサイズの配列で初期化されます。
std::vector<int>,构造函数接受const std::vector<int> &arr,拷贝用this->o = arrを使用することをお勧めします。
std::vector<int>
const std::vector<int> &arr
this->o = arr
この質問は次のように変換できます: どの仮パラメータ形式が初期化リストを渡すことができますか?
非テンプレート:
void foo(T), void foo(const T &),当T可以用初始化列表拷贝初始化时。即初始化T x = {...};合法。
void foo(T), void foo(const 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 でのみ利用可能と言われていますが、一部のコンパイラはすでにサポートしています。
template <class T, size_t N> void foo(const T (&)[N])
コードサンプルには、不可能な一般的な状況がいくつか含まれています。
配列メンバー変数の初期化: 初期化リストで配列メンバーを初期化する簡単な方法はないようです。コンストラクターの関数本体内で値を割り当てることをお勧めします。しかし、それはテンプレートを使用して実現できます:
std::vector<int>
,构造函数接受const std::vector<int> &arr
,拷贝用this->o = arr
を使用することをお勧めします。この質問は次のように変換できます: どの仮パラメータ形式が初期化リストを渡すことができますか?
非テンプレート:
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 でのみ利用可能と言われていますが、一部のコンパイラはすでにサポートしています。コードサンプルには、不可能な一般的な状況がいくつか含まれています。
配列メンバー変数の初期化: 初期化リストで配列メンバーを初期化する簡単な方法はないようです。コンストラクターの関数本体内で値を割り当てることをお勧めします。しかし、それはテンプレートを使用して実現できます:
リーリー