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

标签 c++ static-libraries header-files

我在静态库中创建一个最小的圆圈物理引擎,我遇到了一个问题。我有一个用于对象操作的头文件,其中一个变量是对象位置。位置变量在 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/

相关文章:

c++ - 为什么要有头文件和 .cpp 文件?

c++ - 包括模板函数

c# - 如何使用 CString Reference 调用非托管 C++ DLL

c++ - 如何覆盖嵌套的 C++ 对象方法?

c++ - 在 C++ 中使用静态属性?

c++ - 使用 Xcode 7 GUI (lldb) 调试 C++ 库源代码

c++ - 将软件移植到 Windows,我应该把/usr/share 东西放在哪里?

c++ - 我的代码在 Dev c++ IDE 中运行良好,但在 Linux 终端中则不然。 (特别是在 'while' 循环部分。)

haskell - Cygwin 中的库 "rt"和 "dl"

objective-c - Objective-C - 错误 : 'Expected a type'