我收到了此代码,并要求说明它出了什么问题以及如何解决。代码给我一个类似c++ assignment to this anachronism
的错误,我不确定这是什么意思。
我是C ++的新手,我不知道该怎么做。请帮忙。这是有问题的代码:
class SELF
{
private:
SELF * me;
public:
SELF()
{
this = me;
}
};
如何分配值
答案 0 :(得分:7)
这是30年前从该语言中删除的C ++构造。这是从cfront
的80年代初期开始,直到90年代初期,您仍然可以找到以这种方式工作的编译器。它已替换为operator new
。我在以此方式工作的编译器上编写了一些我的第一个C ++代码(用于Mandlebrot集生成器的complex
类)。
最初,您在这里没有提供足够的上下文来了解在这种情况下如何解决问题。没有任何微不足道的变换可以规范地应用于所有情况。
最初创建了该构造,以便您可以在构造函数中为该对象分配内存。如果您在构造函数中分配给this
,则编译器在创建对象时不会为您的对象分配内存,而是假定您在构造函数中自己完成了内存。
在一条评论中,您说这是从大学作业中直接复制的,我敢打赌甚至您的教授都不知道这个旧结构,解决方案可能是简单地说me = this;
而不是{{1 }}。
但是您的编译器称其为“时代错误”的原因是它。
对于任何对历史感兴趣的人,都可以在the manual for cfront version 'E'的第42页上看到原始结构。