C ++中的全局变量

时间:2012-06-11 13:14:17

标签: c++ global-variables

我正在编写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”,但我无法访问“位置”数组。

任何人都可以帮助我PLZ ??

3 个答案:

答案 0 :(得分:1)

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

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

更好的替代方案是拥有std::vector<Coord>

答案 1 :(得分:1)

只需说明声明:

Coord positions[25]; 

static Coord positions[25]; 

也改变了void setPos

static void setPos

访问数组时,将其访问为:

Position::positions[any value]

但在访问数组之前,请确保调用函数setPos

答案 2 :(得分: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);
}