C ++对象在类中引用

时间:2011-09-16 20:03:54

标签: c++ class reference object-reference

我想知道如何在另一个对象内存储对象的引用,并将该引用设置为私有属性。示例(伪代码):

class foo
{
    public:
        int size;
        foo( int );
};

foo::foo( int s ) : size( s ) {}

class bar
{
    public:
        bar( foo& );
    private:
        foo fooreference;
};

bar::bar( foo & reference )
{
    fooreference = reference;
}

foo firstclass( 1 );
bar secondclass( firstclass );

正如您可能看到的,我只是希望能够将foo的引用存储在此bar类中。我知道如何简单地将它带入一个方法并在该方法的范围内使用它,但在这里我想将它设置为私有属性。我该怎么做呢?

3 个答案:

答案 0 :(得分:2)

您定义和使用任何类成员的方式相同。

确保使用_member-initialiser 初始化引用成员,而不是仅仅在构造函数体中为事后赋值;回想一下,引用必须初始化,以后不能反弹。

class foo
{
    public:
        int size;
        foo( int );
};

foo::foo( int s ) : size( s ) {}

class bar
{
    public:
        bar(foo&);
    private:
        foo& fooreference;
};

bar::bar(foo& reference) : fooreference(reference)
{}

foo firstclass(1);
bar secondclass(firstclass);

答案 1 :(得分:1)

您无法重置参考,因此必须在初始化列表中进行设置。

struct Foo {};

struct Bar {
  Bar(Foo &foo_) : foo(foo_) {}
  void set(Foo &foo_) { foo = foo_; } // copies, doesn't reseat
  Foo &foo;
};

答案 2 :(得分:1)

bar::bar( foo & reference )
{
    fooreference = reference;
}

fooreference只是另一个对象。通过分配,您正在制作参考的副本。请注意,fooreference不是reference的别名。