设置指向另一个指针的指针会以某种方式中断引用

时间:2014-04-28 05:20:27

标签: c++ pointers

根据我对此处指针的理解,currentDancerpushups应该是相同的参考。然而,如果我设置currentDancer我就无法使用它。

Dancer *currentDancer;
DancerPushups pushups; // DancerPushups inherits from public Dancer

void setup() {
  pushUps.init(FL1, FL2, FR1, FR2, BR1, BR2, BL1, BL2);
  currentDancer = &pushups; // try to set pushups as the current dancer
}

void loop() {
  pushups.onBeatStart(duration);        // works great! :D
  currentDancer->onBeatStart(duration); // does nothing D:
}

指针处理的哪个部分我在这里失败了?如何让Dancer *currentDancer指向我已经创建的任意实例?


更新:

这是继承问题吗?

void Dancer::onBeatStart(float duration) {
  // no-op  
}

// DancerPushups : public Dancer
void DancerPushups::onBeatStart(float duration) {
  all(the, cool, stuff, that, isnt, happening);
}

因为我将DancerPushups转换为Dancer*类型,我是不是在运行我的子类方法?

1 个答案:

答案 0 :(得分:1)

听起来onBeatStart不是virtual成员函数。当你调用currentDancer->onBeatStart()时,你正在调用基类实现,如你所示,它实现了什么。