C++ 如何将一个结构的地址分配给另一个结构?

C++ 如何将一个结构的地址分配给另一个结构?,c++,struct,object-address,C++,Struct,Object Address,假设我有 struct someStruct { int a; }; 2节课 在第一个类中的方法中,我创建了结构的一个实例: someStruct structName; 现在我想把这个结构的地址传递给另一个类的构造函数 std::auto_ptr<2ndClass> 2ndClass_ (new 2ndClass(structName)); cpp: 这显然是structName的副本 我的问题是:如何从structName为structName2分配一个地址,以便我

假设我有

struct someStruct
{
    int a;
};
2节课

在第一个类中的方法中,我创建了结构的一个实例:

someStruct structName;
现在我想把这个结构的地址传递给另一个类的构造函数

std::auto_ptr<2ndClass> 2ndClass_ (new 2ndClass(structName));
cpp:

这显然是structName的副本

我的问题是:如何从structName为structName2分配一个地址,以便我可以读写到结构中,然后在离开第二个类后在第一个类中使用这些值?如果不使用指向结构的指针,我怎么做

这显然是structName的副本

不,没有。您通过引用传递,并且您的成员是引用,因此
2ndClass::structName2
将引用您作为参数传递给构造函数的确切对象

问题是如何将地址从structName分配给structName2,这样我就可以读写到结构中,然后在离开第二个类后在第一个类中使用这些值

你不需要这样做,因为你是和推荐人一起工作的。在函数签名中,
代表引用,而不是地址。所以你不传递地址,而是传递对象本身

注意如果原始结构超出范围,您将有一个悬空引用,因此请确保处理该情况。如果内存没有被覆盖,它可能会工作,但这是未定义的行为

这显然是structName的副本

不,没有。您通过引用传递,并且您的成员是引用,因此
2ndClass::structName2
将引用您作为参数传递给构造函数的确切对象

问题是如何将地址从structName分配给structName2,这样我就可以读写到结构中,然后在离开第二个类后在第一个类中使用这些值

你不需要这样做,因为你是和推荐人一起工作的。在函数签名中,
代表引用,而不是地址。所以你不传递地址,而是传递对象本身


注意如果原始结构超出范围,您将有一个悬空引用,因此请确保处理该情况。如果内存没有被覆盖,它可能会工作,但它是未定义的行为。

为什么不想使用指针?为什么不想使用指针?@user1566456请注意,如果原始结构超出范围,您将有一个悬空引用,请务必处理这种情况。如果内存未被覆盖,它可能会工作,但它是未定义的行为。@user1566456请注意,如果原始结构超出范围,您将有一个悬空引用,因此请务必处理这种情况。如果内存没有被覆盖,它可能会工作,但这是未定义的行为。
...
class 2ndClass...
... 
private:
someStruct &structName2;
public:
__fastcall 2ndClass(someStruct &structName);
...
__fastcall 2ndClass::2ndClass(someStruct &structName)
    : structName2(structName)
{
...