如何将指针传递给构造函数
How to pass a pointer to a constructor?
我了解如何创建一个对象,我了解如何然后创建一个指针到该对象。但是我很难在另一个对象/类中创建一个指向对象的指针。
我已经创建了一个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()
{
}
谁能告诉我该怎么做呢? 简单地改变Car.cpp
Car::Car(Engine &engine){...}
Car::Car(Engine* engine): _engine(engine){}
,也不要忘记将Car.h
中构造函数的签名更改为
Car(Engine*);
否则,您将指针与引用混合在一起,它们在语义上是不相同的。还要考虑使用构造函数初始化列表,而不是构造函数内部的赋值。对于pod来说,这没有什么区别,但是对于构造成本高的对象,这就有区别了,因为首先对象是默认构造的,然后通过复制构造函数赋值给它。
相关文章:
- 如果基类包含双指针成员,则派生类的构造函数
- 复制构造函数C++无法正确复制指针
- 使用基类指针调用基类的值构造函数的语法是什么?
- C++ 对象指针数组的复制构造函数
- 构造函数 (C++) 中的 char 指针参数存在问题
- 为什么使用 std::istream_iterator 构造函数返回指针
- 在对象构造期间,将指向尚未构造的子对象的指针传递给另一个子对象的构造函数是否危险?
- 使用指向成员函数的指针在另一个类中调用类构造函数
- 通过从构造函数中的'this'复制的指针改变常量对象
- 为什么指针对象没有调用默认构造函数
- 函数返回时,带指针的复制构造函数失败
- 如何编写复制构造函数来复制指针?
- 如何使用函数(而不是构造函数)将派生类对象分配给基类指针
- 使用 Rcpp 公开将指向对象的指针作为参数的构造函数
- std::shared_ptr 使用别名构造函数,是否可以检索初始指针值?
- 如何正确实现具有原始指针的类的复制构造函数?
- 构造函数主体内的本地指针C++内存泄漏
- 如何在将原始指针移动到基类构造函数之前从unique_ptr中提取原始指针
- 有没有办法通过读取 c++ 中的文件来构造函数指针
- 构造函数指针改变