【发布时间】:2015-05-27 10:42:27
【问题描述】:
我想声明一个对类的引用,就像指向类的指针一样,作为它自己的成员变量。以下是我编写的代码,但我现在不知道如何进一步创建此类的对象,因为即使我编写默认构造函数或构造函数来仅初始化 var,编译器也会始终出错。
class Test2
{
private:
Test2& testRef;
int var;
public:
Test2( int x, Test2 testObj ) : var( x ), testRef( testObj )
{
}
};
我需要进一步创建此类对象,或者根本不可能这样做。如果不可能,编译器为什么不简单地给出一个错误说你不能引用自己的类。
【问题讨论】:
-
@wonkorealtime 这里不需要我故意不想要任何优化。
-
我认为您需要重新考虑项目的结构,因为在该类中引用您的类可能会在您的进一步开发中导致一些问题...
-
@WojciechFrohmberg 我只想知道如果是/否是否可以这样做,那么为什么是/否。
-
这不是关于优化,而是看这里:cpp.sh/9b2c。您希望它始终初始化包含的引用。
-
testObj的生命周期仅在构造函数期间持续存在,因此它将在 ctor 完成时被销毁。将其更改为Test2&会很好,我想您的问题可以简化为“第一个对象在哪里”。事实证明,您可以通过多种方式进行调整,例如,将任意指针重新解释为 Test2*。 @wonkorealtime 在上面给出了更多合理的解决方案。所以编译器不会阻止你。
标签: c++ class object reference