首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在公共场合定义对象,但在构造器中创建对象

在公共场合定义对象,但在构造器中创建对象
EN

Stack Overflow用户
提问于 2014-05-14 12:19:24
回答 2查看 88关注 0票数 0

我想做的类似于这(工作):

代码语言:javascript
复制
class Claw {
  public:
    Claw(int pin);
  private:
    int pin;
  };

Claw::Claw(int pinNumber) {
  pin = pinNumber;
  }

但是我想用类而不是基本类型来实现它。我希望在私有部分中定义类(这样我就可以在所有对象上使用它),并在AccelStepper构造函数中执行Wheel构造函数。我尝试过这两种解决方案,它们都给出了不同的错误:

代码语言:javascript
复制
class Wheel {
  public:
    Wheel(int pin);
  private:
    AccelStepper stepper;
  };

Wheel::Wheel(int pinNumber) {

  // This doesn't work
  AccelStepper stepper(AccelStepper::DRIVER, pinNumber, 1);

  // This also doesn't work
  stepper(AccelStepper::DRIVER, pinNumber, 1);
  }

我怎样才能实现我想要做的事情?

请注意,这是可行的,但我无法传递密码:

代码语言:javascript
复制
class Wheel {
  public:
    Wheel();
  private:
    AccelStepper stepper(5);
  };

Wheel::Wheel() {
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-14 12:22:32

你用成员初始化列表做的

代码语言:javascript
复制
Wheel::Wheel(int pinNumber)
    : stepper(AccelStepper::DRIVER, pinNumber, 1)
{
}
票数 4
EN

Stack Overflow用户

发布于 2014-05-14 15:16:25

在你的标题中:

代码语言:javascript
复制
class Wheel
{
public:
    class Stepper; // Forward declaration of embedded class

    Wheel();
    Stepper& stepper() { return *_pStepper; }

private:

    Stepper* _pStepper;
};

在执行过程中:

代码语言:javascript
复制
class Wheel::Stepper
{
public:
    void accelerate() {}
};

Wheel::Wheel()
    : _pStepper( new Stepper() )
{
    stepper().accelerate();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23654582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档