C++ 指针指向的对象在每次调用get函数时都会更改值?C++;

C++ 指针指向的对象在每次调用get函数时都会更改值?C++;,c++,class,object,pointers,C++,Class,Object,Pointers,我有两门课,一门是燃油课,另一门是英里课。每24英里使用1种燃油。对于这个作业,我需要在我的“miles”类中有一个指向“fuel”类的指针,这样我们就可以让“mile”类使用“fuel”类,而不必在“mile”类中创建整个对象“fuel”对象。在我测试它之前一切都很顺利,经过一些调试之后,似乎出于某种原因,每当我在“miles”类中调用get函数时,fuel对象的值都发生了变化。然而,我所做的只是返回一个成员变量。为什么它会改变我的燃料对象?我也不会在其他任何地方更改指针的值,因此它应该始终指

我有两门课,一门是燃油课,另一门是英里课。每24英里使用1种燃油。对于这个作业,我需要在我的“miles”类中有一个指向“fuel”类的指针,这样我们就可以让“mile”类使用“fuel”类,而不必在“mile”类中创建整个对象“fuel”对象。在我测试它之前一切都很顺利,经过一些调试之后,似乎出于某种原因,每当我在“miles”类中调用get函数时,fuel对象的值都发生了变化。然而,我所做的只是返回一个成员变量。为什么它会改变我的燃料对象?我也不会在其他任何地方更改指针的值,因此它应该始终指向fuel对象

等级规范

类实现

#包括“里程表.h”
里程表::里程表(国际通用里程表、燃油表){

如果(currMiledge>=0&&currMiledge这应该是未定义的行为

Odometer::Odometer(int currMileage, FuelGauge Gauge) {
    if (currMileage >= 0 && currMileage <= maxMilage) {
        currentMiles = currMileage;
    }
    else {
        cout << "Starting mileage is invalid" << endl;
    }

    fuelObject = &Gauge;
}
里程表::里程表(国际通用里程表、燃油表){

如果(currMiledge>=0&&currMiledge这应该是未定义的行为

Odometer::Odometer(int currMileage, FuelGauge Gauge) {
    if (currMileage >= 0 && currMileage <= maxMilage) {
        currentMiles = currMileage;
    }
    else {
        cout << "Starting mileage is invalid" << endl;
    }

    fuelObject = &Gauge;
}
里程表::里程表(国际通用里程表、燃油表){

如果(CurrMiledge>=0&&CurrMiledge通过
FuelGauge Gauge
的值-我怎么会错过这个…;-)复习东西时不要跟我说漏掉的东西。:D我有故事要讲,没有各种适用的NDA。非常感谢;-;。结果证明,只有你说的才是错的。我只是通过传递fuel类的地址而不是类对象本身来改变里程表类的构造方式!对你有好处!但是,我ecommend您切换到使用
std::shared_ptr
共享所有权,而不是使用原始指针。您可以进一步了解它。按值传递
FuelGauge Gauge
-我怎么会错过这个…;-)复习东西时不要跟我说漏掉的东西。:D我有故事要讲,没有各种适用的NDA。非常感谢;-;。结果证明,只有你说的才是错的。我只是通过传递fuel类的地址而不是类对象本身来改变里程表类的构造方式!对你有好处!但是,我ecommend您可以切换到使用
std::shared\u ptr
来实现共享所有权,而不是使用原始指针。您可以进一步了解它。您可以创建一个较小的对象,只处理该值而不处理其他内容吗?此外,在某些情况下(很明显)在某些情况下,当返回的是某个大的随机整数时,可能会返回对象的地址或内存的一个随机单元。您能否创建一个较小的对象,只处理该值而不处理其他内容?此外,在某些情况下(明显)在某些情况下,当返回的是某个大的随机整数时,将返回对象的地址或内存的一个随机单元。
Odometer::Odometer(int currMileage, FuelGauge Gauge) {
    if (currMileage >= 0 && currMileage <= maxMilage) {
        currentMiles = currMileage;
    }
    else {
        cout << "Starting mileage is invalid" << endl;
    }

    fuelObject = &Gauge;
}