C ++不完整类型类

时间:2016-06-06 17:19:50

标签: python-2.7 incomplete-type

我在c ++中创建了一个类,它有一个同一个类的成员,它给出了一个不完整的类型类错误。

class A{
    private:
        A member;
};
我发现了这些 "Incomplete type" in class which has a member of the same type of the class itselfIncomplete 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

2 个答案:

答案 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中都得到了这个。