如何在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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在Objective-C中将类对象设置为另一个类的属性

来自分类Dev

在Objective-C中将对象传递给另一个类的最佳方法是什么?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何在Codeigniter中将数组从一个类控制器传递到另一个

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何将自定义对象的数组列表从一个Java类传递到另一个Java类?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何从一个类到另一个类引用变量?

来自分类Dev

如何在Unity3d中将C#组件从一个游戏对象传递到另一个

来自分类Dev

如何从另一个类访问对象变量?

来自分类Dev

如何从另一个类访问对象

来自分类Dev

如何访问另一个类的对象

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    在Objective-C中将类对象设置为另一个类的属性

  7. 7

    在Objective-C中将对象传递给另一个类的最佳方法是什么?

  8. 8

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

  9. 9

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

  10. 10

    如何在Codeigniter中将数组从一个类控制器传递到另一个

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

    如何将自定义对象的数组列表从一个Java类传递到另一个Java类?

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

    如何从一个类到另一个类引用变量?

  26. 26

    如何在Unity3d中将C#组件从一个游戏对象传递到另一个

  27. 27

    如何从另一个类访问对象变量?

  28. 28

    如何从另一个类访问对象

  29. 29

    如何访问另一个类的对象

热门标签

归档