如何将结构的地址分配给另一个结构?
可以说我有如何将结构的地址分配给另一个结构?
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,所以我可以读取和写入的结构,然后离开第二级后的第一类使用这些值?我怎样才能做到这一点,而不使用指向结构的指针?
这obvoiusly使得structName的副本。
不,它不需要。你通过引用传递,你的成员是一个引用,所以2ndClass::structName2
将引用你传递给构造函数的参数的确切对象。
问题是如何从structName指定地址给structName2,这样我就可以读取和写入结构,然后在离开第二个类后在第一个类中使用这些值。
你并不需要,因为你引用的工作。在函数签名中,&
代表引用,而不是地址。所以你不会传递地址,而是传递对象本身。
注意如果原来的结构超出范围,你会有一个悬而未决的参考,所以一定要处理这种情况。如果内存不被覆盖,它可能会工作,但它是未定义的行为。
呃,我工作太多了,是的,它正在工作,但我测试了它错误... – user1566456 2012-07-31 17:42:52
@ user1566456注意,如果原始结构超出范围,您将有一个悬而未决的参考,所以一定要处理这种情况。如果内存没有被覆盖,它可能*出现*工作,但它是未定义的行为。 – 2012-07-31 17:46:09
为什么你不想使用指针? – 2012-07-31 17:37:28