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

时间:2012-07-31 17:34:27

标签: c++ struct object-address

让我说我有

struct someStruct
{
    int a;
};

和2个班。

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

someStruct structName;

现在我想将此结构的地址传递给另一个类的构造函数

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

我想在这里使用在2ndClass中更改的struct值 - 请阅读下面的内容......

第二节课有:

头:

...
class 2ndClass...
... 
private:
someStruct &structName2;
public:
__fastcall 2ndClass(someStruct &structName);
...

CPP:

__fastcall 2ndClass::2ndClass(someStruct &structName)
    : structName2(structName)
{
...

这显然是一个structName的副本。

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

1 个答案:

答案 0 :(得分:4)

  

这个obvoiusly制作了structName的副本。

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

  

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

您不需要,因为您使用引用。在函数签名中,&代表引用,而不是地址。所以你不传递地址,而是传递对象本身。

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