Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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++ Arduino中具有构造函数的对象组合_C++_Arduino - Fatal编程技术网

C++ Arduino中具有构造函数的对象组合

C++ Arduino中具有构造函数的对象组合,c++,arduino,C++,Arduino,我有一个电机类为我的个人步进电机。现在我正在编写一个Motors类来同步步进电机的运动,但是我在实例化Motors中的Motor类时遇到了问题 我得到了这个错误: Robot:238:5: error: '((Motors*)this)->Motors::a' does not have class type a.enable(1); b.enable(1); c.enable(1); 到目前为止,这是我的电机类别代码: class Motors{ public: Motor a(

我有一个电机类为我的个人步进电机。现在我正在编写一个Motors类来同步步进电机的运动,但是我在实例化Motors中的Motor类时遇到了问题

我得到了这个错误:

Robot:238:5: error: '((Motors*)this)->Motors::a' does not have class type
 a.enable(1); b.enable(1); c.enable(1);
到目前为止,这是我的电机类别代码:

class Motors{
public:
  Motor a(xstep, xdir, xenable, xend, true);
  Motor b(ystep, ydir, yenable, yend);
  Motor c(zstep, zdir, zenable, zend);

  Motors(){

  }

  void go_home(){
    a.enable(1); b.enable(1); c.enable(1);
    a.set_dir(0); b.set_dir(0); c.set_dir(0);
    delay(mtime) 
  }
};

还尝试在Motors构造函数内部实例化,但不起作用。

我假设
启用
设置\u dir
是Motor类上的方法。所以在Motor类中需要三个Motor实例。如果您对每个Motor对象的默认构造函数都满意,则可以将它们封装为:

class Motors
{
  public:
    Motors() {
    }

    void go_home() {
      a.enable(1); b.enable(1); c.enable(1);
      a.set_dir(0); b.set_dir(0); c.set_dir(0);
      delay(mtime);
    }

  private:
    Motor a;
    Motor b;
    Motor c;
};

在这里发布问题可能是有用的:这不是ARDUNO特定的,而是一个通用的C++问题,我将参数传递给Mype类,所以不能使用默认构造函数。已找到正确的代码结构。如何结束此问题?
class Motors{
public:
  Motor a = Motor(xstep, xdir, xenable, xend, amax, true);
  Motor b = Motor(ystep, ydir, yenable, yend, bmax);
  Motor c = Motor(zstep, zdir, zenable, zend, cmax);

  Motors(){

  }

  void go_home(){
    a.enable(1); b.enable(1); c.enable(1);
    a.set_dir(0); b.set_dir(0); c.set_dir(0);
    delay(mtime) 
  }
};