2012-07-31 96 views
2

可以说我有如何将结构的地址分配给另一个结构?

struct someStruct 
{ 
    int a; 
}; 

和2班。

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

someStruct structName; 

现在我想这个结构的地址传递给另一个类

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

我想要的构造使用2ndClass中更改的结构值 - 阅读下面...

第二类有:

标题:

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

CPP:

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

这显然使得structName的副本。

我的问题是:如何能我一个地址从structName分配给structName2,所以我可以读取和写入的结构,然后离开第二级后的第一类使用这些值?我怎样才能做到这一点,而不使用指向结构的指针?

+0

为什么你不想使用指针? – 2012-07-31 17:37:28

回答

4

这obvoiusly使得structName的副本。

不,它不需要。你通过引用传递,你的成员是一个引用,所以2ndClass::structName2将引用你传递给构造函数的参数的确切对象。

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

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

注意如果原来的结构超出范围,你会有一个悬而未决的参考,所以一定要处理这种情况。如果内存不被覆盖,它可能会工作,但它是未定义的行为。

+0

呃,我工作太多了,是的,它正在工作,但我测试了它错误... – user1566456 2012-07-31 17:42:52

+0

@ user1566456注意,如果原始结构超出范围,您将有一个悬而未决的参考,所以一定要处理这种情况。如果内存没有被覆盖,它可能*出现*工作,但它是未定义的行为。 – 2012-07-31 17:46:09