私は現在、クラスとコンストラクターについて学んでいます。
class Container
{
....
public:
// constructors
Container() {
length = 0;
data = nullptr;
print("default constructor");}
Container(int lenght){
data = new double[lenght];
}
// destructor
// operators
void print(const std::string& info) const
{
// print the address of this instance, the attributes `length` and
// `data` and the `info` string
std::cout << " " << this << " " << length << " " << data << " "
<< info << std::endl;
}
private:
int length;
double* data;
};
私はすでに2つのコンストラクターを作成しました。追加のコンストラクターを作成する必要があります。私は次の指示を受けました。
std :: initializer_listを受け取るコンストラクターを作成します。リストには、データ配列の値が含まれています。コンストラクター委任を使用して、このコンテナーの長さを設定し、データを割り当てます。次に、リストのすべての要素をデータにコピーします。
建設代表団に問題があります。新しいコンストラクターが引数を取る場合。長さを委任する必要がある以前の構造はどのようになっていますか(入力変数はintのみであるため)。その上、データの割り当てとコピーについて混乱しています。
誰かが私にこの問題に取り組むのを助けるための例を教えてもらえますか?
ありがとう、ナディーン:)
委任は、メンバー初期化子リストの使用に似ています。
例:
#include <algorithm> // std::copy
#include <initializer_list>
// ...
Container(std::initializer_list<double> il) :
Container(il.size()) // delegate to Container(int length)
{
std::copy(il.begin(), il.end(), data); // copy the data
}
また、委任先のコンストラクターは現在、長さを保存しないことに注意してください。次のように書き直すことができます。
Container(int len) : // use the member initializer list
length(len),
data(new double[length])
{
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加