我理解如何创建一个对象,我理解如何创建一个指向该对象的指针。 但我正在努力创建指向另一个对象/类中的对象的指针。
我创建了一个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()
{
}
有人可以告诉我我会怎么做吗?
答案 0 :(得分:2)
只需更改Car.cpp
Car::Car(Engine &engine){...}
到
Car::Car(Engine* engine): _engine(engine){}
也不要忘记将Car.h
中的构造函数的签名更改为
Car(Engine*);
否则,您将指针与引用混合在一起,这些引用在语义上并不相同。还要考虑使用构造函数初始化列表而不是构造函数内的赋值。对于POD而言,它没有任何区别,但是对于昂贵的构造对象,它会有所不同,因为首先对象是默认构造的,然后通过复制构造函数分配给它。