これは私の問題です。私はいくつかのコードを学習しようとしていて、ちょうどそれを書き換えるためのいくつかの新しい方法を探求しながら遊んでいますが、最後の変数ではありません(もし私がm_belowSceneとm_oversceneの場所を変更すると、それはうまく動作します)。コンストラクタ内の変数の初期化の適切な順序
マイ修正:
SceneManager::SceneManager()
: m_scene(std::make_shared<PolyGraphicNode>()),
m_cplSign(std::make_shared<CPLSymbol>(0.05, 0.2, 0.5)),
m_belowScene(std::make_shared<PolyGraphicNode>()){
std::shared_ptr<CPLSymbol> symbol = std::make_shared<CPLSymbol>(0.01, 0.04, 0.1, CPL_NODE);
m_belowScene->append(symbol);
}
m_overScene(std::make_shared<PolyGraphicNode>());
適切な方法は、あなたが初期化子リストとコンストラクタの体を区別する必要があり、この
SceneManager::SceneManager()
: m_scene(std::make_shared<PolyGraphicNode>()),
m_cplSign(std::make_shared<CPLSymbol>(0.05, 0.2, 0.5)),
m_overScene(std::make_shared<PolyGraphicNode>()),
m_belowScene(std::make_shared<PolyGraphicNode>()){
std::shared_ptr<CPLSymbol> symbol = std::make_shared<CPLSymbol>(0.01, 0.04, 0.1, CPL_NODE);
m_belowScene->append(symbol);
}
初期化子リストは終了します。 – user463035818
イニシャライザのリストの順序は宣言の順序ではなく、(!)順序は関係ありません –