Безопасно ли следующее?Я знаю, строго говоря, разыменование указателя до того, как объект, на который он указывает, правильно сконструировано, кажется опасным, но я представляю, что компилятор просто предоставит указатель без фактической разыменования.Ну, я полагаю.
(Примечание: gInst на самом деле не использует ссылку намного позже.)
TU 1
Sys::System::System::System(const sf::VideoMode& rVM, const std::string& rSTR, unsigned long settings) :
win(rVM, rSTR, settings),
gInst(*this)
{
}
Заголовок A
namespace Sys
{
namespace System
{
struct System;
}
namespace UI
{
struct GUI
{
System::System& topl;
MenuBar menu;
GUI(System::System&);
private:
GUI();
GUI(const GUI&);
GUI& operator=(const GUI&);
};
}
}
Заголовок B
namespace Sys
{
namespace System
{
struct System
{
sf::RenderWindow win;
Sys::UI::GUI gInst;
Sys::Editor::Editor eInst;
System(const sf::VideoMode&, const std::string&, unsigned long);
private:
System();
System(const System&);
System& operator=(const System&);
};
void start();
}
}