は長さ3のベクトルに初期化されたインスタンス変数を、次のクラスを考えてみましょう。そのタイプを一度だけ書く方法はありますか? (現実の生活の中で、私は道より冗長型の名前を扱っています。)C++を繰り返すタイプ
私はこれが機能するはずと思った:おそらく、
class A {
public:
vector<int> a(3);
};
が、いや、それはとにかくC++ 11のためにしませんなぜなら 'a'がメンバー関数として宣言されているように見えるからです。
は長さ3のベクトルに初期化されたインスタンス変数を、次のクラスを考えてみましょう。そのタイプを一度だけ書く方法はありますか? (現実の生活の中で、私は道より冗長型の名前を扱っています。)C++を繰り返すタイプ
私はこれが機能するはずと思った:おそらく、
class A {
public:
vector<int> a(3);
};
が、いや、それはとにかくC++ 11のためにしませんなぜなら 'a'がメンバー関数として宣言されているように見えるからです。
いいえ、このようなことはできません。どちらかあなたが最初のソリューションを使用するか、次の操作を実行する必要があります。
class A {
private:
vector<int> a;
public:
A() : a(3) {};
};
OPのように、有効なC++ではないので、 '
@ Rakete1111が修正されました。構文エラーでした。ああ、それは私の心をスキップし、他の構文は別のことを行います。ナイスキャッチ。 –
ありがとうございます、これは正しく見えます。そんな単純なこと。挫折している... –
また、あなたは、ブレースの初期化構文を使用することができます。
class A
{
vector<int> a{1,2,3};
};
今、ベクトルは3つの要素が含まれています。
つまり、実際にはコンストラクタの外で変数をインスタンス化するべきではありません。それで、1つの問題が修正されます。 – DavidBittner
@DavidBittnerデフォルトイニシャライザで何が問題になっていますか? – Quentin
これは良い習慣に反すると思った。そうでない場合は、TIL – DavidBittner