繁体   English   中英

如何在C ++中调用指针成员变量的构造?

[英]How to call the construction of a pointer member variable in C++?

因此,我有一个名为Player的类,具有如下的私有指针变量:

class Player
{
public:
    Player();

    void update();
    void draw();
private:
    InputCp* input;
    PhysicsCp* physics;
    GraphicsCp* graphics;
};

每个InputCp,PhysicsCp和GraphicsCp都有构造函数,如下所示:

PhysicsCp::PhysicsCp()
{
    // adjust values to change player physics
    normMaxSpeedX = 10;
    maxSprintSpeedX = 20;
    normAccel = 1;
    sprintAccel = 2;
    gravity = 2;
    initialJumpSpeed = 10;
}

如何做到这一点,以便在调用播放器构造函数时,它具有用于输入,物理和图​​形实例的构造函数?

只是不要使用指针:

做:

class Player
{
public:
    Player();

    void update();
    void draw();
private:
    InputCp input;
    PhysicsCp physics;
    GraphicsCp graphics;
};

您的默认构造函数将被调用。


注意:

  • 如果您确实需要指针(事实是您很少这样做),请使用智能指针(例如std:unique_ptr<> ),以避免与指针相关的内存管理std:unique_ptr<>发生的混乱。

它们需要在构造函数中创建

Player::Player()
{
    input = new InputCp;
    physics = new PhysicsCp;
    graphics = new GraphicsCp;
}

但是请确保您没有泄漏它们,因此请在析构函数中将其delete

Player::~Player() 
{
    delete input;
    delete physics;
    delete graphics;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM