以下是否安全?严格地说,我知道,在它指向的东西被正确构造之前解引用指针看起来很危险,但我想象编译器只是提供一个指针而不实际进行任何解引用。好吧,我想。C++在自己的施工过程中以*为参考
(注意: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&);
};
}
}
部首乙
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();
}
}
它取决于'gInst'函数,你没有在这里显示。如果它只存储指针/引用,并且在ctor抛出时不使用它,那么你很好。 –
如果ctor抛出,然后gInst的析构函数被调用,对吧?暗示'gInst'的析构函数最好不要认为它传递的'System'对象是好的。 –