プライベートメンバ配列を持つクラス(foo)を作成しようとしています。このクラスは、配列が初期化されるコンストラクタの別のクラス(foo2)のプライベートメンバとして使用されます。C++はメンバ配列を初期化します
example.h:
class foo{
private:
int* ary;
public:
foo(int*);
~foo();
}
example.cpp:
foo::foo(int* b){
ary = b;
}
useOfExample.h
class foo2{
private:
foo my_foo;
public:
foo2();
~foo2();
}
useOfExample.cpp
foo2::foo2() : myfoo({2,3}){}
私はC++でnoobのようなものですが、私は本当に明確ではないかもしれないことを理解しています。言い換えれば、配列が[2,3]に設定されているメンバーfooを持つfoo2が必要です。
これは配列ではない、それは整数へのポインタです(私はあなたがそれらをほぼ同じに扱うことができると知っています)。なぜあなたはSTLクラスを使うことができるときにC++のポインタでこの恐ろしいことをしますか?チェックしないで '{2,3} 'の範囲を知っていますか? 'myfoo'がまだそれを指している間に範囲外に出ることはできますか? – John3136
配列はポインタではなく、ポインタは配列ではなく、C++の標準動的配列は 'std :: vector'です。あなたはそれを使うべきです。できない場合は、コースの内容(または学習しているもの)を見直して、実際にここで何をすべきかを把握する必要があります。 –
'int * ary;' => 'int ary [2];'または 'std :: array ary;'です。それは配列であり、初期化されていないポインタではありません。 –