【发布时间】:2018-07-15 12:26:21
【问题描述】:
我正在尝试为我的游戏项目创建一个小时钟。 我正在使用chrono-high-resolution-clock。 但是,在我的头文件“gameTime.hpp”中声明变量后,在我的源文件“gameTime.cpp”中引用它时,我得到一个段错误。 希望任何人都可以提供帮助(如果答案应该是微不足道的:对不起,但我对该主题所做的搜索对我没有帮助) 代码如下:
头文件:
class GameTime
{
private:
std::chrono::high_resolution_clock::time_point mTime;
std::chrono::high_resolution_clock::time_point mLastTime;
double mTimeSpan;
public:
GameTime();
~GameTime();
void init();
double timePassed();
};
源文件:
GameTime::GameTime()
{
}
void GameTime::init()
{
mTime = std::chrono::high_resolution_clock::now();
mLastTime = std::chrono::high_resolution_clock::now();
}
double GameTime::timePassed()
{
mTime = std::chrono::high_resolution_clock::now();
mTimeSpan = std::chrono::duration_cast<std::chrono::milliseconds>(mTime - mLastTime).count();
mLastTime = std::chrono::high_resolution_clock::now();
return mTimeSpan;
}
和主要功能:(有人指出我应该包括这个)
double frameTime;
GameTime* gameTime;
gameTime->init();
while(game->running())
{
frameTime = gameTime->timePassed();
std::cout << frameTime << std::endl;
}
当我尝试为 mTime 设置值时,段错误发生在 init() 函数内部。 提前致谢!
【问题讨论】:
-
您忘记发布调用这些函数的代码(很可能类实例无效)。
-
感谢您的快速答复!我编辑了我的帖子,并在其中包含了我调用函数的主要功能的重要部分。我通过指针初始化 GameTime 的事实可能是导致错误的原因吗?问题是,如果我不通过指针初始化它,我会得到那些红线告诉我“表达式必须具有指针类型”
-
您实际上并没有创建
GameTime的实例,gameTime可能不需要是指针。只需放下指针,这应该可以解决您的问题。 -
@It'scominghome 好的,谢谢你们!好的,这是一个明显的错误,但我想我不会单独找到它。我现在将用你让我想出的解决方案来回答我的问题:)
标签: c++ segmentation-fault initialization declaration chrono