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));