如何在标题中声明此成员作为函数?

时间:2014-02-15 01:02:17

标签: c++ private member-functions

这些是我的抓取工具头文件的一些部分。我无法更改此头文件。

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.有人能告诉我这里的问题吗?

2 个答案:

答案 0 :(得分:1)

这不是一个功能。这是一个变量。没有任何有用的方法来假装它是一个功能。完全没有。周期。

答案 1 :(得分:0)

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

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