我想做的类似于这(工作):
class Claw {
public:
Claw(int pin);
private:
int pin;
};
Claw::Claw(int pinNumber) {
pin = pinNumber;
}但是我想用类而不是基本类型来实现它。我希望在私有部分中定义类(这样我就可以在所有对象上使用它),并在AccelStepper构造函数中执行Wheel构造函数。我尝试过这两种解决方案,它们都给出了不同的错误:
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);
}我怎样才能实现我想要做的事情?
请注意,这是可行的,但我无法传递密码:
class Wheel {
public:
Wheel();
private:
AccelStepper stepper(5);
};
Wheel::Wheel() {
}发布于 2014-05-14 12:22:32
你用成员初始化列表做的
Wheel::Wheel(int pinNumber)
: stepper(AccelStepper::DRIVER, pinNumber, 1)
{
}发布于 2014-05-14 15:16:25
在你的标题中:
class Wheel
{
public:
class Stepper; // Forward declaration of embedded class
Wheel();
Stepper& stepper() { return *_pStepper; }
private:
Stepper* _pStepper;
};在执行过程中:
class Wheel::Stepper
{
public:
void accelerate() {}
};
Wheel::Wheel()
: _pStepper( new Stepper() )
{
stepper().accelerate();
}https://stackoverflow.com/questions/23654582
复制相似问题