声明对类的引用作为类成员

Kri*_*Oza 1 c++ reference class object

我想声明一个类的引用,类似于指向类的指针作为它自己的成员变量.以下是我编写的代码,但我现在陷入困境,如何继续创建这样一个类的对象,因为即使我只编写默认构造函数或构造函数来编译器,编译器也总是会出错var.

class Test2
{
private:
    Test2& testRef;
    int var;

public:
    Test2( int x, Test2 testObj ) : var( x ), testRef( testObj )
    {

    }
};
Run Code Online (Sandbox Code Playgroud)

我需要做些什么来创建这样的类的对象或根本不可能这样做.如果不可能,为什么不编译器只是给出一个错误,说你不能引用自己的类.

Ben*_*ley 5

如果您有引用成员,则必须在所有构造函数中初始化它,因为必须初始化引用.甚至是你的默认构造函数.由于您创建的此类的第一个对象将没有其他任何可以引用的对象,因此您必须将其引用给自己.例如:

Test2() :testRef(*this) {}
Run Code Online (Sandbox Code Playgroud)

  • @Krishna_Oza:据我所知,是的,这是合法的.我从来没有见过任何相反的东西,我也无法让任何编译器抱怨它. (3认同)