素人の質問かもしれませんが、以上です。私は3つのクラスを持っています:
ドローアブル オブジェクト:
class DrawableObject
{
private:
int x;
//...
public:
int getX();
//...
}
DrawableObject から継承する FormElement:
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 から継承する TextField:
class TextField : public DrawableObject
Form という名前のクラスもあります。
class Form {
public:
list<FormElement*> getFormElements();
void generateForm();
private:
list<FormElement*> formElements;
}
フォームは、その generateForm() メソッドで、いくつかの TextFields をそのリストに追加します。
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() にアクセスしようとすると、プログラムは終了します。
理由を教えてください。私は何を間違って定義していますか?
ありがとうございます。マーティン。