如何将指针传递给构造函数?

时间:2015-10-05 02:38:44

标签: c++ oop pointers reference

我理解如何创建一个对象,我理解如何创建一个指向该对象的指针。 但我正在努力创建指向另一个对象/类中的对象的指针。

我创建了一个Car和一个Engine类。 我想让Car类有一个指向引擎对象的指针,该对象将被传递给Car类的构造函数。我没有运气试图找出正确的语法来做到这一点。

Engine.h

#pragma once
class Engine
{

private:
    int _power;

public:
    Engine(int);
    ~Engine();

    int getPower();
    void setPower(int);
};

Engine.cpp

#include "stdafx.h"
#include "Engine.h"


Engine::Engine(int power)
{
    _power = power;
}


Engine::~Engine()
{
}

int Engine::getPower()
{
    return _power;
}

void Engine::setPower(int power)
{
    _power = power;
}

Car.h

#pragma once
#include "Engine.h"

class Car
{
private:
    Engine* _engine;
public:
    Car();
    ~Car();
}; 

Car.cpp

#include "stdafx.h"
#include "Car.h"


Car::Car(Engine &engine)
{
    _engine = engine;
}

Car::~Car()
{
}

有人可以告诉我我会怎么做吗?

1 个答案:

答案 0 :(得分:2)

只需更改Car.cpp

即可
Car::Car(Engine &engine){...}

Car::Car(Engine* engine): _engine(engine){}

也不要忘记将Car.h中的构造函数的签名更改为

Car(Engine*);

否则,您将指针与引用混合在一起,这些引用在语义上并不相同。还要考虑使用构造函数初始化列表而不是构造函数内的赋值。对于POD而言,它没有任何区别,但是对于昂贵的构造对象,它会有所不同,因为首先对象是默认构造的,然后通过复制构造函数分配给它。