Итак, вот моя проблема: я пытаюсь изучить некоторый код, и я просто играю с изменением и изучаю некоторые новые способы его написания, но я понял, что если объявление с {} это не последняя переменная, в которой она не работает, (если я изменяю места m_belowScene и m_overscene, это работает tho).Правильный порядок инициализации переменных в конструкторе
Моя модификация:
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
Порядок объявления, а не (!) Порядок в списке инициализаторов –