头文件和&的问题c ++文件

时间:2010-09-03 18:38:05

标签: c++ static-libraries header-files

我在静态库中创建了一个最小的圆圈物理引擎,我遇到了一个问题。我有一个用于对象操作的头文件,其中一个变量是对象的位置。位置变量在bpObject.h中声明,我有一个void函数SetPosition(),它访问当前位置并将其设置为指定的参数(也在bpObject.h中声明)。我的问题是在源文件中,我需要访问位置变量(私有)。我无法通过bpObject类访问它,因为作为一个类,当它用作类型时,它将没有正确的值。那么,我如何访问类中的位置变量?

提前致谢,

Greg Treleaven

修改

bpObject.h的代码

#include "bpMath.h"

namespace bp
{
    class Object
    {
    private:
    static bp::Vector position;
    static bp::Vector velocity;
    static bp::Vector acceleration;
    public:
    static single restitution;
    static single radius;
    static void setPosition(single X, single Y);
    static bp::Vector getPosition();
    static void applyPosition(single X, single Y);
    static void setVelocity(single X, single Y);
    static bp::Vector getVelocity();
    static void applyVelocity(single X, single Y);
    static void setAcceleration(single X, single Y);
    static bp::Vector getAcceleration();
    static void applyAcceleration(single X, single Y);
     }
}

2 个答案:

答案 0 :(得分:3)

我猜你实际上并不想要那些'静态',这是你的第一个问题(因为它的立场,你几乎只能访问一个对象)

一旦摆脱了这些,您可以通过以下方式在源文件中实现SetPosition:

namespace bp {
    void Object::SetPosition(single X, single Y) {
        position[0] = X; //or however your bp::Vector is implemented
        position[1] = Y;
    }
}

是的,位置是私有的,但是当您实际定义方法时,您可以访问成员。这就是你要问的问题吗?

答案 1 :(得分:0)

你问错误的问题。如果,如您所说,变量在需要时没有正确的值,则问题与访问方法或公共/私有无关。

该变量应如何获得其正确的值?有些东西必须调用setPosition,所以你必须安排一些事情,以便在之前发生 其他任何需要该值的事情。

一旦你拥有了它,你的访问者(setPositiongetPosition)应该可以正常工作(在你摆脱static之后,这是没有意义的。)