2016-12-18 12 views
-2

プライベートメンバ配列を持つクラス(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が必要です。

+1

これは配列ではない、それは整数へのポインタです(私はあなたがそれらをほぼ同じに扱うことができると知っています)。なぜあなたはSTLクラスを使うことができるときにC++のポインタでこの恐ろしいことをしますか?チェックしないで '{2,3} 'の範囲を知っていますか? 'myfoo'がまだそれを指している間に範囲外に出ることはできますか? – John3136

+1

配列はポインタではなく、ポインタは配列ではなく、C++の標準動的配列は 'std :: vector'です。あなたはそれを使うべきです。できない場合は、コースの内容(または学習しているもの)を見直して、実際にここで何をすべきかを把握する必要があります。 –

+0

'int * ary;' => 'int ary [2];'または 'std :: array ary;'です。それは配列であり、初期化されていないポインタではありません。 –

答えて

0

は、見てください:あなたは動的配列を初期化するために、{...}構文を使用することはできませんStatic array vs. dynamic array in C++

を。手動で入力する必要があります。

+0

答えをくれてありがとう、私はそうすることによって可能性があると思ったので、配列を動的にし続けることを認識していない整数を初期化するときのように、 。 – loogikos

関連する問題