Foo
コンストラクターに必須の引数があるクラスがあるとします。Bar
さらに、メンバーとして type のオブジェクトを持つ別のクラスを定義したいとしますFoo
。
class Foo {
private:
int x;
public:
Foo(int x) : x(x) {};
};
class Bar {
private:
Foo f(5);
};
これをコンパイルするとエラーが発生します (この場合、g++ は " error: expected identifier before numeric constant
" を返します)。1Foo f(5);
つには、コンパイラにとっては関数定義のように見えますが、実際には値 5f
で初期化されたインスタンスになりたいと考えてFoo
います。ポインタを使用して問題を解決できます。
class Foo {
private:
int x;
public:
Foo(int x) : x(x) {};
};
class Bar {
private:
Foo* f;
public:
Bar() { f = new Foo(5); }
};
しかし、ポインターを使用する方法はありますか?