Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:无法调用成员函数';sf::Time sf::Clock::getElapsedTime()常量';毫无目的 void更新(bool-moright,bool-moleft) { 时钟(); 如果(晨光==真){ xvel=5; } 如果(moleft==真){ xvel=-5; } 如果(!(上午|摩尔英尺)){ xvel=0; } sf::时间t1=秒(0.1f); Time time1=Clock::getElapsedTime()//此处出现错误1 而(时间1)_C++_Sfml - Fatal编程技术网

C++ 错误:无法调用成员函数';sf::Time sf::Clock::getElapsedTime()常量';毫无目的 void更新(bool-moright,bool-moleft) { 时钟(); 如果(晨光==真){ xvel=5; } 如果(moleft==真){ xvel=-5; } 如果(!(上午|摩尔英尺)){ xvel=0; } sf::时间t1=秒(0.1f); Time time1=Clock::getElapsedTime()//此处出现错误1 而(时间1)

C++ 错误:无法调用成员函数';sf::Time sf::Clock::getElapsedTime()常量';毫无目的 void更新(bool-moright,bool-moleft) { 时钟(); 如果(晨光==真){ xvel=5; } 如果(moleft==真){ xvel=-5; } 如果(!(上午|摩尔英尺)){ xvel=0; } sf::时间t1=秒(0.1f); Time time1=Clock::getElapsedTime()//此处出现错误1 而(时间1),c++,sfml,C++,Sfml,让我们将您的sf::Clock实例称为与该类名不同的东西,比如Clock。虽然这不是一个错误,但可能会让人混淆 Clock Clock(); 另外,请注意,这一行对于编译器来说可能是不明确的,因为它看起来像一个名为clock的函数原型,它不带任何参数并返回一个sf::clock实例。只需删除这些参数即可 Clock clock(); t1未用于此功能,可以删除 此行试图调用静态函数getElapsedTime。sf::Clock类没有这样命名的静态函数,只有一个成员函数。此调用和whil

让我们将您的
sf::Clock
实例称为与该类名不同的东西,比如
Clock
。虽然这不是一个错误,但可能会让人混淆

Clock Clock();
另外,请注意,这一行对于编译器来说可能是不明确的,因为它看起来像一个名为
clock
的函数原型,它不带任何参数并返回一个
sf::clock
实例。只需删除这些参数即可

Clock clock();

t1
未用于此功能,可以删除


此行试图调用静态函数
getElapsedTime
sf::Clock
类没有这样命名的静态函数,只有一个成员函数。此调用和
while
循环后的调用是您描述的编译器错误的原因

Time time1 = Clock::getElapsedTime()
还是不好。请注意行末尾缺少的

Time time1 = Clock.getElapsedTime()

但这仍然不起作用,因为
time1
是一个
sf::Time
瞬间,您无法将
sf::Time
与浮点进行比较。您必须调用
time1
的成员,该成员以秒为单位以浮点形式返回经过的时间

while (time1 > 0.16666666);
还有一件更重要的事,你把一个
放在行的末尾,这意味着
while
循环有一个空的主体,它将永远运行(如果
time1
不大于
0.16666666
),你必须删除结尾的分号,如果循环结束,你的下一行将成为主体

while (time1.asSeconds() > 0.16666666);

这一行用
getElapsedTime
的结果替换
time1
的值。您的意思是将经过的时间添加到
time1
,您可以通过将
=
替换为
+=
来实现

time1 = clock::getElapsedTime();
上面的一行仍然包含两个错误。与前面一样,
sf::Clock
没有名为
getElapsedTime
的静态函数,加上
Clock
在代码中不存在(只是
Clock
带大写字母
C

我在这里假设,您想要等待一段特定的时间,使用这个
while
循环。为此,您可以使用该函数

time1 += Clock.getElapsedTime();

1.类型和名称不应使用相同的标识符。2.将其更改为
Clock Clock();
可能会引发另一个问题:它被编译为函数声明(而不是默认构造)。因此,它必须是
Clock Clock;
Clock Clock{}
Clock
Clock
Clock
?这是很多“时钟”,让你很难理解你的代码。
sf::Clock::getElapsedTime()
不是一个静态函数(根据)。因此,它应该被称为
Clock.getElapsedTime();
(假设
clock
声明为
sf::clock;
before)。(这就是标题中出现错误的实际原因。);-)@Scheff很抱歉打扰您,但将其更改为:void update(bool moright,bool moleft){clock clock;sf::Time t1=秒(0.1f);Time time1=clock.getElapsedTime();while(time1<0.16666666);time1=clock::getElapsedTime();}返回:错误:与“运算符”不匹配错误是否清除?没有

while (time1 << 0.16666666);
while (time1 > 0.16666666);
while (time1.asSeconds() > 0.16666666);
while (time1.asSeconds() > 0.16666666)
time1 = clock::getElapsedTime();
time1 += Clock::getElapsedTime();
time1 += Clock.getElapsedTime();
sf::sleep(sf::seconds(0.16666666f));