0

我正在编写 c++ 项目,其中包含几个类。我创建了一个名为 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

positions是与类实例关联的成员变量,因此不是全局变量。您可以通过 make 它使其类似于全局变量static。这样做,它将成为一个类范围的变量,而不是绑定到一个实例。

您需要在单个实现文件中定义它。

一个更好的选择是拥有一个std::vector<Coord>.

于 2012-06-11T13:18:28.183 回答
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 回答