各インデックスに空の文字列を割り当て、後で を関数addB()の値に置き換えることになっています。 私はこれにかなり新しいので、私は多くの問題を抱えています。クラスコンストラクタ内で動的に割り当てられた配列を初期化する方法
class A //in a.h
{
private:
B * b;
int maxNumberOfItems;
//...
public:
A();
~A();
void addB(const B & something);
};
//in a.cpp
A::A()
{
maxNumberOfItems=10;
for(int i=0;i<maxNumberOfItems;i++)
{
b[i]="";//has to be an empty string, I am getting a segmentation fault
}
}
A::~A(){/*...*/}
//...
//in b.h
class B
{
private:
string name;
int price;
public:
void setName(string);
string getName();
void setPrice();
int getPrice(int);
B & operator=(string &);
};
//in b.cpp
B & B::operator=(string & a){name = a;price = 0; return *this;}
//...
これを使用すると、セグメント・フォールトを得るよう
'b'は初期化されていないポインタのようです...メモリを割り当てるために_how_を知りたいですか? –
あなたの 'b'は割り当てられていません。 [operator new \ [\]](http://en.cppreference.com/w/cpp/memory/new/operator_new) –
部屋の象:動的配列の代わりに 'std :: vector'を使い、可能なら。 – user4581301