我在c ++中创建了一个类,它有一个同一个类的成员,它给出了一个不完整的类型类错误。
class A{
private:
A member;
};
我发现了这些
"Incomplete type" in class which has a member of the same type of the class itself
,Incomplete Type
这些错误解释了错误发生的原因以及解决方法。
但是对于练习我在python 2.7上做了相同的代码,并且能够创建一个具有相同类的成员的类。
我的问题是如何(解释是什么)python能够做到这一点,以及c ++和python在处理这个特定问题时可能存在的差异
python代码:
class node:
def __init__(self,t):
self.key=t
self.lc=None
self.rc=None
parent=node(10)
lc=node(5)
rc=node(15)
parent.lc=lc
parent.rc=rc
答案 0 :(得分:1)
Python有鸭子输入,在你调用它的构造函数之前,实际上并没有创建成员对象。
在Python中,您的变量甚至可以包含一个字符串,然后再包含一个类对象。我不明白你将如何拥有相同的代码'。您没有指定变量的类型,它们可以包含您想要的任何内容,只会在错误操作时引发错误。
在C ++中,成员A
将与类同时创建,从而导致无限递归。
Use a pointer如果您想选择何时分配会员。
答案 1 :(得分:1)
你确定吗?
>>> class A:
... aa = A()
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in A
NameError: name 'A' is not defined
我在Python 2.7和3.5中都得到了这个。