C++ 将参数传递给类的实例

标签 c++ class parameters

我正在调试一些用 C++ 编写的模拟软件,但无法理解部分代码。

该软件模拟一些在 3D 世界中移动的实体,它们的行为可以设置为从 A 到 B 沿直线移动、绕特定点旋转或遵循预定义的路线等。

当实体在模拟中移动时,有关其移动的一些信息会呈现给用户,例如:其当前速度、航向(方向)、到当前目标的距离、到达当前目标所需的时间该位置的目标和预计到达时间等。

我目前正在处理的错误是 ETA 和旅程的“完成当前行程的时间”向用户显示的值不正确。

我在向用户显示此信息的 C++ 源文件中遇到了以下代码:

DateTimeAndZone fpETA(mCurrentTime);
SystemTimeTypes::addRelativeTimeToSystemTime(fpETA, flightPlanETA);

DateTimeAndZone 是一个类,所以 fpETA 是该类的一个实例...我不明白的是 mCurrentTime (这也是一个 DateTimeAndZone),可以作为类实例的参数传递——看起来与将参数传递给函数的方式相同。

如果我转到 DateTimeAndZone 类的定义,在它的末尾有一个 return 语句返回一个 static std::string_classname

任何人都可以向我解释如何将一个类作为参数传递给新类的创建吗?这意味着什么?这是否意味着新类将采用现有类中存储的信息?还是我在这里遗漏了什么?

我在 SO 上遇到了这个问题,但它并没有真正回答我的问题... Passing a class object as an argument in C++

最佳答案

DateTimeAndZone fpETA(mCurrentTime);

这会调用 DateTimeAndZone 的构造函数,并定义参数。如果 mCurrentTime 是一个 DateTimeAndZone 对象,默认情况下将调用复制构造函数,如果已定义,则调用 DateTimeAndZone 的复制构造函数。

关于C++ 将参数传递给类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190051/

相关文章:

java - 如何从单独的类中的对话框返回值

java - 对象不是抽象的,不会覆盖抽象方法

objective-c - 从另一个类实现中获取 CGFloat 实例变量

function - 如何使用 interface{} 作为灵活的函数参数和返回类型?

javascript - iframe src 属性随参数变化

c++ - glm 旋转和平移

c++ - 在类模板的其他未定义成员类的显式特化中定义隐藏 friend 是否合法?

具有聚合初始化的 C++11 构造函数委托(delegate)

c++ - 我怎样才能让我的相机朝我面对的方向移动

c++ - 具有许多成员的类(class)的最佳做法