0
這可能是一個業餘問題,但在這裏。我有三個clases:繼承問題
DrawableObject:
class DrawableObject
{
private:
int x;
//...
public:
int getX();
//...
}
FormElement從DrawableObject inheirts:
class FormElement : public DrawableObject
FormElement有一個名爲方法wasPushed:
bool FormElement::wasPushed(SDL_Event event)
{
bool wasPushed =
(
(event.motion.x >= getX()) //Inherited getX()
&& // Blah blah...
) ? true : false;
return wasPushed;
}
最後,文本字段,這來自FormElement的Inheirts:
class TextField : public DrawableObject
我也有一個類,命名形式:
class Form {
public:
list<FormElement*> getFormElements();
void generateForm();
private:
list<FormElement*> formElements;
}
表增加了一些TextField添加到它的列表,在其generateForm()方法:
void Form::generateForm() {
TextField *aTextField = new TextField(10, 10, 120);
this->formElements.push_back(aTextField);
}
後來,它試圖遍歷它:
for(list<FormElement*>::iterator it = getFormElements().begin()
; it != getFormElements().end()
; ++it)
{
if ((*it)->wasPushed(theEvent))
{ //Etc.
那麼,程序退出,當它試圖從wasPushed我訪問getX()的ThOD。
請問誰能告訴我爲什麼?我定義錯了什麼?
我非常感謝你。 Martín。 Martín。
我太愛你了,先生!就是這樣!非常感謝你! –
@iL_Marto - 不要只愛沃恩。接受答案! –
現在我感受到了愛! :) –