如何在C ++中将类对象的引用正确传递到另一个类对象

乔什·克莱登(Josh Claydon)

尝试发布一个更容易阅读/调试的示例,该示例是我先前发布的。main.cpp中的A对象(通过引用传递到B对象)似乎最终是原始A对象的副本。也就是说,在B对象内对A对象执行的操作不会影响在main.cpp中创建的A对象的实例。给定main.cpp中的打印命令,它将打印以下内容:17,17,42,17; 当我希望程序可以打印17、17、42、42时。

[main.cpp]
#include <iostream>
#include "A.h"
#include "B.h"
using namespace std;

int main()
{
    A a = A();
    B b = B();

    a.setNumber(17);
    b.setA(a);

    cout << a.getNumber() << endl; //prints 17
    cout << b.getNum() << endl; //prints 17

    b.changeNumber(42); 
    cout << b.getNum() << endl; //prints 42
    cout << a.getNumber(); //prints 17
}


[A.cpp]

void A::setNumber(int num)
{
    number = num;
}

int A::getNumber()
{
    return number;
}


[B.cpp]

void B::setA(A &aObj)
{
    a = aObj;
}

void B::changeNumber(int num)
{
    a.setNumber(num);
}

int B::getNum() {
    return a.getNumber();
}

[[Fields]]
[A.h] int number;
[B.h] A a;

感谢您的阅读!

德克·霍尼施

B中的成员a应该是某种引用或指针。

这是在B中使用指针的示例实现:

#pragma once

#include "A.h"

class B
{

public:
    void setA(A &aObj)
    {
        a = &aObj;
    }

    void changeNumber(int num)
    {
        a->setNumber(num);
    }

    int getNum()
    {
        return a->getNumber();
    }

private:
    A *a;
};

或参考文献:

#pragma once

#include "A.h"

class B
{

public:
    B(A& obj)
    : a(obj)
    {
    }

    void changeNumber(int num)
    {
        a.setNumber(num);
    }

    int getNum()
    {
        return a.getNumber();
    }

private:
    A& a;
};

否则,如果B没有引用A,则它将因为拥有自己的副本而无法识别更改。(如果您使用指针/引用,还请注意所引用对象的复制/移动行为和生存期)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过Java中的方法将对象从一个类传递到另一个类

如何在Django views.py中将一个类对象的ID传递给另一个类对象

如何在 typescript ReactJs 中将一个类的对象转换为另一个类的对象?

如何在我的 Java 代码中将对象传递给另一个类的方法?

如何在C ++中将私有整数从A类传递到B类中的另一个Int变量

如何在 C++ 中将另一个类引用到另一个类中?

如何在Java中将参数从一个类传递到另一个类?

如何在URI中将变量从一个类传递到另一个类?

如何在TestNG框架中将值从一个类传递到另一个类

如何在Java中将数据从一个json对象传递到另一个对象?

如何在Java中将对象从主线程传递到另一个线程

在C ++中将一个类对象分配给另一个类对象

如何在另一个类Java中将对象添加到数组

如何在另一个活动中传递类对象的arrayList?

如何将对象的引用存储在另一个类 C++ 中?

C ++将成员函数引用从一个类实例传递到另一个类实例

如何在android Kotlin中将对象从一个活动传递到另一个活动?

如何在JavaScript中将对象从一个文件传递到另一个文件?

如何在Android中将对象列表从一个活动传递到另一个活动?

如何将引用从一个对象内部传递到另一个对象的构造函数

如何在C ++中将指向一个类的指针复制到另一个类中?

如何传递对另一个变量的对象的引用?

从C ++中另一个(不相关!)类的基类引用派生类的对象

春天如何将一个对象注入到另一个类对象?

在UML类图中,如何显示一个类创建另一个类的对象但不存储对象引用?

C#如何通过另一个类对象访问类对象的值

如何正确实例化静态字段tat是另一个类对象

AbstractControl对象如何传递给另一个类?

如何将编写的对象传递给另一个类的构造函数?