我在静态库中创建一个最小的圆圈物理引擎,我遇到了一个问题。我有一个用于对象操作的头文件,其中一个变量是对象位置。位置变量在 bpObject.h 中声明,我有一个无效函数 SetPosition(),它访问当前位置并将其设置为指定的参数(也在 bpObject.h 中声明)。我的问题是在源文件中,我需要访问位置变量(私有(private))。我无法通过 bpObject 类访问它,因为作为一个类,当它用作类型时它不会具有正确的值。那么,我将如何访问类中的位置变量?
提前致谢
格雷格·崔利文
编辑
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);
}
}
最佳答案
我猜你实际上并不想要所有那些“静态”,这是你的第一个问题(就目前而言,你几乎只能访问一个对象)
一旦你摆脱了那些,你可以通过以下方式在你的源文件中实现 SetPosition:
namespace bp {
void Object::SetPosition(single X, single Y) {
position[0] = X; //or however your bp::Vector is implemented
position[1] = Y;
}
}
是的,位置是私有(private)的,但是当您实际定义方法时,您可以访问成员。这就是您要问的吗?
关于c++ - 头文件和c++文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638628/