出於某種原因,以下內容不會像我的程序那樣崩潰,但我很肯定它在設計上類似。首先,輸出不正確。它輸出類似於:實例化對象和對象成員
0x537ff4 5471612
雖然主程序輸出(nil)指針地址。
問題的關鍵可能是Dr_中的display_。
下面的代碼:
#include <iostream>
#include "debug.h"
class LCDText {
public:
int rows_;
LCDText() { rows_ = 10; };
};
class Generic {
LCDText *lcdText_;
public:
Generic(LCDText *lcdText) { lcdText_ = lcdText; };
void Setup() {
Error("%p %d", lcdText_, lcdText_->rows_);
}
};
class Display : public LCDText {
Generic *visitor_;
public:
Display(Generic *visitor) { visitor_ = visitor; };
};
class Drv : public Generic {
Display *display_;
public:
Drv() : Generic((LCDText *)display_) {
display_ = new Display((Generic *)this);
};
~Drv() { delete display_; };
};
int main()
{
Drv drv;
drv.Setup();
return 0;
}