C ++-分配给“ this”过时

时间:2019-05-14 05:56:59

标签: c++

我收到了此代码,并要求说明它出了什么问题以及如何解决。代码给我一个类似c++ assignment to this anachronism的错误,我不确定这是什么意思。

我是C ++的新手,我不知道该怎么做。请帮忙。这是有问题的代码:

class SELF
{
  private:
    SELF * me;
  public:
     SELF()
     {
          this = me;
     }
 };

如何分配值

1 个答案:

答案 0 :(得分:7)

这是30年前从该语言中删除的C ++构造。这是从cfront的80年代初期开始,直到90年代初期,您仍然可以找到以这种方式工作的编译器。它已替换为operator new。我在以此方式工作的编译器上编写了一些我的第一个C ++代码(用于Mandlebrot集生成器的complex类)。

最初,您在这里没有提供足够的上下文来了解在这种情况下如何解决问题。没有任何微不足道的变换可以规范地应用于所有情况。

最初创建了该构造,以便您可以在构造函数中为该对象分配内存。如果您在构造函数中分配给this,则编译器在创建对象时不会为您的对象分配内存,而是假定您在构造函数中自己完成了内存。

在一条评论中,您说这是从大学作业中直接复制的,我敢打赌甚至您的教授都不知道这个旧结构,解决方案可能是简单地说me = this;而不是{{1 }}。

但是您的编译器称其为“时代错误”的原因是它。

对于任何对历史感兴趣的人,都可以在the manual for cfront version 'E'的第42页上看到原始结构。