我有一些单身人士课程(请不要谈论单身人士的使用)。
class InputSystem : boost::serialization::singleton<InputSystem>
{
private:
boost::shared_ptr<sf::Window> mInputWindow;
public:
InputSystem()
{
mInputWindow = boost::shared_ptr<sf::Window>( new sf::Window(someARgs) );
someMethod();
}
void someMethod()
{
mInputWindow->...() // Calling some methods of sf::Window class
// Everything is fine here
}
const sf::Input &Handle() const
{
return mInputWindow.get()->GetInput();
}
};
void main()
{
InputSystem::get_mutable_instance().Handle(); // Here is all members of InputSystem have invalid addresses in memory (0x000)
}
可能出现什么问题?
答案 0 :(得分:3)
以下是InputSystem的所有成员在内存中都有无效地址(
0x000
)
someMethod()
将您的班级数据归零,或者您误诊了该问题。
将您的主要功能更改为:
InputSystem& inputSystem = InputSystem::get_mutable_instance();
inputSystem.Handle();
这将创建单例并首次尝试将其用于单独的行。启动调试器并逐步查看代码,查找单例数据损坏的确切位置。