繁体   English   中英

错误:无法在没有对象的情况下调用成员函数“sf::Time sf::Clock::getElapsedTime() const”

[英]error: cannot call member function 'sf::Time sf::Clock::getElapsedTime() const' without object

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

但这仍然行不通,因为time1sf::Time瞬间,您不能将sf::Time与浮点数进行比较。 您必须调用time1asSeconds成员,它将以秒为单位的经过时间作为浮点数返回。

while (time1.asSeconds() > 0.16666666);

更重要的一件事,你放了一个; 在该行的末尾,这意味着while循环的主体为空,它将永远运行(如果time1不大于0.16666666 )。 您必须删除最后的分号,如果循环,您的下一行将成为正文。

while (time1.asSeconds() > 0.16666666)

time1 = clock::getElapsedTime();

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

time1 += Clock::getElapsedTime();

上面的行仍然包含另外两个错误。 和以前一样, sf::Clock没有所谓的静态函数getElapsedTime ,加上clock不会在你的代码(只是存在Clock大写C )。

time1 += Clock.getElapsedTime();

我在这里假设你想等待特定的时间通过这个while循环。 为此,您可以使用sf::sleep函数。

sf::sleep(sf::seconds(0.16666666f));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM