2016-11-25 5 views
-4

したがって、C++には少し問題があります。後で構造体型の配列サイズを指定する(C++)

私はこのような構造体があります。

typedef struct{ 
    int n; 
    int x[]; 
    int y[]; 
} MyStruct; 

をそして、私の問題は、それが入力から来ている、後に関数原因でyの配列、xの大きさを指定するには、どのように私はそれを把握することができないということですかつては知られていなかった。それは動的なものとして働いているようですが、私はそれが静的であることを望みます。 BTWこの構造体のmy変数も配列です。

など。 C#で、それはこのような何かを働いた:

MyStructVariable[ (an index) ].x = new int[value]; 

それは些細な事ですが、私はそれを把握することができない場合、私はC++に残念に新しいです。 助けてくれてありがとう!

+1

である、あなたは動的配列を持っていると思います。 'int * x;'、そして 'MyStruct value;を実行することができます。 value.x = new int [value] '(後で' delete'することを忘れないでください)。それに加えて、C++ではstructをtypedefする必要はありません。あるいは、C++のソリューション 'std :: vector 'を使うのがよいでしょう。 –

+1

@AlgirdasPreidžius最初に 'std :: vector 'をお勧めします。 –

+0

@πάνταῥεῖええ、最​​初のコメントを書いた後、それについて考えました。 –

答えて

0

など。 C#で、それはこのような何かを働いた:

MyStructVariable[ (an index) ].x = new int[value]; 

C++は、特に動的なメモリ割り当ての取り扱いについては、C#のは異なっています。あなたがC++で欲しい

だからstd::vector<int>

struct MyStruct { 
    std::vector<int> x; 
    std::vector<int> y; 
    MyStruct(int value) : x(value), y(value) {} 
}; 

または

struct MyStruct { 
    int x; 
    int y; 
}; 

std::vector<MyStruct> myVector(mysize); 
myVector[an index].x = value; 
関連する問題