如何将在标头中声明的此成员用作函数

How do I use this member, declared in a header, as a function?

本文关键字:成员 函数 声明      更新时间:2023-10-16

这些是我的爬虫头文件的某些部分。我无法更改此头文件。

private:
    int top_position;         // The maximum position of the throttle
    bool left_reverse;        // true if left direction is reverse
    bool right_reverse;       // true if right direction is reverse

所以我尝试在我的实现文件中实现left_reverse。不过,这仍然是一个存根。

bool left_reverse()
 {
   return(false);
 }

我用它来实现其他功能。

double Crawler::left_engine_speed() const
{
  double speedpercentage;
  double hundred(100.0);
  speedpercentage = left_throttle.flow()*hundred;
  if(left_reverse())     // <<< HERE IT IS 
    {
      speedpercentage=speedpercentage*(-1);
    }
  return(speedpercentage);
}

但是我收到一个错误,告诉我错误:'((const Vehicles::Crawler*)this)->Vehicles::Crawler::left_reverse' cannot be used as a function.有人可以告诉我这里的问题吗?

这不是一个函数。这是一个变量。没有有用的方法来假装它是一个函数。完全。时期。

如果函数在某个命名空间中声明,例如在全局命名空间中,则写入

double Crawler::left_engine_speed() const
{
  double speedpercentage;
  double hundred(100.0);
  speedpercentage = left_throttle.flow()*hundred;
  if(::left_reverse())     // <<< HERE IT IS 
    {
      speedpercentage=speedpercentage*(-1);
    }
  return(speedpercentage);
}

if(SomeNameSpace::left_reverse()) 

double Crawler::left_engine_speed() const
{
  bool left_reverse();
  double speedpercentage;
  double hundred(100.0);
  speedpercentage = left_throttle.flow()*hundred;
  if(left_reverse())     // <<< HERE IT IS 
    {
      speedpercentage=speedpercentage*(-1);
    }
  return(speedpercentage);
}

这是一个简单的例子

#include <iostream>
class Crawler
{
public:
    double left_engine_speed() const;
private:
    bool right_reverse; 
};
bool left_reverse() { return true; }
double Crawler::left_engine_speed() const
{
    if ( left_reverse() ) return 1.0;
    else return 0.0;
}
int main() 
{
    std::cout << Crawler().left_engine_speed() << std::endl;
    return 0;
}