0

2 つの異なるクラスが相互にやり取りできるようにしようとしています。そのため、1 つのクラスに、コンストラクターで指定された他のクラスのオブジェクトへのポインターがあります。相互作用はこれまでのところ機能しており、ポイント先のオブジェクトのパラメーターを変更でき、端末に出力しているため、変更を確認できます。しかし、このオブジェクトからパラメーターを取得しようとし、それを指すクラスを介して端末に出力しようとすると、デバッグ出力の原因であることがわかっている Int のゼロ値しか得られません。直接呼び出された場合はゼロ。コードの例を示します。

クラスA:

class Spieler
{
    private:
        int score;
        Schlaeger *schlaeger;
        int adc_wert;
        int channel;


    public:

        Spieler(int x, Schlaeger &schl, int adc_wert_c=0, int channel_c=0 )
        {
            score=x;
            schlaeger=&schl;
            adc_wert=adc_wert_c;
            channel=channel_c;
        }
    //....
        void set_schl(Schlaeger &schl){ schlaeger=&schl;}
        int getPosY(){ schlaeger->getSchlaeger_pos_y();}
        int getPosX(){ schlaeger->getSchlaeger_pos_x();}
        void setPosY(int y){ schlaeger->set_pos_y(y);}      

        void schlaeger_zeichen(){
            schlaeger->schlaeger_zeichen();
        }

        void schlaeger_bewegen(){
            schlaeger->schlaeger_bewegen(getADC());
        }
//...

};

クラス B:

class Schlaeger
{
    private:
        int schlaeger_pos_x;
        int schlaeger_hoehe;
        int schlaeger_pos_y;
    public:

        Schlaeger(int x=0, int h=5, int pos_y=15)
        {
            schlaeger_pos_x=x;
            schlaeger_hoehe=h;
            schlaeger_pos_y=pos_y;
        }

        int getSchlaeger_pos_x()
        {
            return schlaeger_pos_x;
        }
        int getSchlaeger_pos_y()
        {
            return schlaeger_pos_y;
        }
        int getSchlaeger_hoehe()
        {
            return schlaeger_hoehe;
        }
        void set_pos_y(int new_y)
        {
            schlaeger_pos_y=new_y;
        }


};

変更メソッドの呼び出しが機能し、変更を確認でき、デバッグ出力で確認できます。

4

1 に答える 1

4

ゲッターで値を返していない

int getPosY(){ schlaeger->getSchlaeger_pos_y();}

する必要があります

int getPosY(){ return schlaeger->getSchlaeger_pos_y();}
于 2013-01-10T19:51:35.507 に答える