正しく初期化されていないメンバーに対して行うクラスのコンストラクターに苦労しています。
シミュレーションに使用する設定を処理するクラス「Settings」と、シミュレーション手順を実行するクラスSimulationsがあります。
私が理解できないのは、このコードが期待どおりに機能しない理由です。
class Settings{
public:
int n ; // a number I need to create properly a vector in my class simulation
// ... rest of the code constructors etc to read values from files.
// everything works fine and the values are assigned properly
}
class Simulation{
public:
std::vector<int> v ;
Settings *SP;
Simulation(Settings *);
}
Simulation::Simulation(Settings *pS)
:SP(pS), v(std::vector<int>(SP->n,0)) {} // the constructor doesn't work,
// v is initialized but it is not created as a vector of size n, but 0.
コンストラクターの使い方に問題があると思いますが、その理由がわかりません。
ちなみに、中括弧内でvを定義するとうまく機能しますが、適切な方法で定義しても期待どおりに機能しない理由を知りたいだけです。
助けてくれてありがとう!