Yax*_*lat 0 c++ constructor pointers
所以我有一个名为Player的类,私有指针变量如下:
class Player
{
public:
Player();
void update();
void draw();
private:
InputCp* input;
PhysicsCp* physics;
GraphicsCp* graphics;
};
Run Code Online (Sandbox Code Playgroud)
InputCp,PhysicsCp和GraphicsCp中的每一个都有如下所示的构造函数:
PhysicsCp::PhysicsCp()
{
// adjust values to change player physics
normMaxSpeedX = 10;
maxSprintSpeedX = 20;
normAccel = 1;
sprintAccel = 2;
gravity = 2;
initialJumpSpeed = 10;
}
Run Code Online (Sandbox Code Playgroud)
我如何制作它,以便在调用播放器构造函数时,它具有输入,物理和图形实例的那些?
只是不要使用指针:
做:
class Player
{
public:
Player();
void update();
void draw();
private:
InputCp input;
PhysicsCp physics;
GraphicsCp graphics;
};
Run Code Online (Sandbox Code Playgroud)
并且将为您调用默认构造函数.
注意:
std:unique_ptr<>例如),以避免通常与指针相关的内存管理混乱.