0

いくつかのクラスを含む c++ プロジェクトを書いています。1 つの配列と 1 つの関数を含む、Position.h という名前の .h ファイルを作成しました。

class Position
{
public:
    Coord positions[25];

public:
    void setPos(int index, double x, double y)
    {
        positions[index].x = x;
        positions[index].y = y;
    }
};

この配列の値を別のクラスから設定したいので、このプロジェクトのすべてのクラスは同じ値を参照します。「Position.h」を他のクラスに含めましたが、「positions」配列にアクセスできません。

誰でも私を助けてくれますか??

4

3 に答える 3

1

ステートメントを変更するだけです:

Coord positions[25]; 

static Coord positions[25]; 

また、に変更void setPos します

static void setPos

アレイにアクセスしている間、次のようにアクセスします。

Position::positions[any value]

ただし、配列にアクセスする前に、必ず関数を呼び出してくださいsetPos

于 2012-06-11T13:21:25.777 に答える
1

他の人が提案しているように、あなたはメンバーを作ることができますstatic

クラスのインスタンスをPositionグローバル変数として作成し、それを使用することもできます。

Position globalPosition;

void function_using_position()
{
    globalPosition.setPos(0, 1, 2);
}

int main()
{
    function_using_position();
}

または、ローカル変数にして、参照として渡します。

void function_using_position(Position &position)
{
    position.setPos(0, 1, 2);
}

int main()
{
    Position localPosition;

    function_using_position(localPosition);
}
于 2012-06-11T13:22:39.067 に答える
1

positionsクラス インスタンスに関連付けられたメンバー変数であるため、グローバルではありません。にすることで、グローバルに似たものにすることができますstatic。そうすることで、クラススコープの変数になり、インスタンスにバインドされません。

単一の実装ファイルで定義する必要があります。

さらに良い代替手段は、std::vector<Coord>.

于 2012-06-11T13:18:28.183 に答える