c++ - 错误:不能在没有对象的情况下调用成员函数 'sf::Time sf::Clock::getElapsedTime() const'
问题描述
void update(bool moright, bool moleft)
{
Clock Clock();
if (moright == true){
xvel = 5;
}
if (moleft == true){
xvel = -5;
}
if (!(moright || moleft)){
xvel = 0;
}
sf::Time t1 = seconds(0.1f);
Time time1 = Clock::getElapsedTime() // error 1 here
while (time1 << 0.16666666);
time1 = clock::getElapsedTime(); // error 2 here
}
返回:错误:无法在没有对象的情况下调用成员函数 'sf::Time sf::Clock::getElapsedTime() const' 并且:错误:'clock' 不是类、命名空间或枚举 对 sfml 和 c++ 来说是新的,因此很抱歉,如果这是一个愚蠢的问题。
解决方案
Clock Clock();
让我们将您的sf::Clock
实例称为与该类名不同的名称,例如clock
. 虽然这不是错误,但它可能会令人困惑。
Clock clock();
另外,请注意,这一行对于编译器来说可能是模棱两可的,因为它看起来像一个名为 的函数原型clock
,它不带参数并返回一个sf::Clock
实例。只需删除括号。
Clock clock;
sf::Time t1 = seconds(0.1f);
t1
没有在这个功能中使用,可以删除。
Time time1 = Clock::getElapsedTime()
这一行试图调用静态函数 getElapsedTime
。该类sf::Clock
没有像这样命名的静态函数,只有一个成员函数。此调用以及while
循环之后的调用是您描述的编译器错误的原因。
Time time1 = Clock.getElapsedTime()
它仍然不好。注意行尾的缺失;
。
Time time1 = Clock.getElapsedTime();
while (time1 << 0.16666666);
您在<<
这里使用了运算符,即“按位左移”运算符。您的意思是“小于”运算符 ( <
),但是因为您想检查是否经过了特定的时间量,您应该使用“大于”运算符 ( >
)。
while (time1 > 0.16666666);
但这仍然行不通,因为time1
它是一个sf::Time
瞬间,您无法将 ansf::Time
与浮点数进行比较。您必须调用 的asSeconds
成员time1
,它将以秒为单位的经过时间作为浮点数返回。
while (time1.asSeconds() > 0.16666666);
更重要的是,你;
在行尾放了 a,这意味着while
循环有一个空的主体,它将永远运行(如果time1
不大于0.16666666
)。您必须删除最后的分号,如果循环,您的下一行将成为正文。
while (time1.asSeconds() > 0.16666666)
time1 = clock::getElapsedTime();
此行将 的值替换为time1
的结果getElapsedTime
。您的意思是将经过的时间添加到 中time1
,您可以通过替换=
为来实现+=
。
time1 += Clock::getElapsedTime();
上面的行仍然包含另外两个错误。和以前一样,sf::Clock
没有一个名为 的静态函数,并且在您的代码中不存在getElapsedTime
plus (只是带有一个大写字母)。clock
Clock
C
time1 += Clock.getElapsedTime();
我在这里假设您想通过此while
循环等待特定的时间过去。为此,您可以使用该sf::sleep
功能。
sf::sleep(sf::seconds(0.16666666f));
推荐阅读
- android - android ble广告包示例源请
- .net - 如何从 listview visual c++ .net 中获取选择项
- android - 如何提高 BufferedWriter 在 Android 中的性能?
- python - 从 StackOverflow 内容创建数据帧示例的最快方法
- ios - 快速按钮无故变蓝
- sql-server - 使用 host.docker.internal 从 docker 连接到本地计算机(主机)中的 SQL Server
- r - 为什么我无法打印使用 knitr 包中的 kable 函数生成的正确输出?
- python-2.7 - python 2:使用日期时间索引对熊猫数据框进行切片会从想要的日期跳过一天
- go - golang string.ToLower 不工作
- java - Java Scanner,读取多行时没有此类元素异常