2011-04-23 96 views
0

我想让类有它的封闭类的成员的类,但我得到一个错误说字段有不完整的类型。这里有一个例子字段有不完整的类型C++

class List { 
public: 
     List (int element, List rest) { 
       _first = element; 
       _rest = rest; 
     } 
. 
. 
. 
} 

有没有办法解决这个问题呢?

+3

'_rest'是如何声明的? – 2011-04-23 23:51:37

回答

2

使用此:

'rest'应该是一个指针List

5

你还没有给我们的List的完整定义,但我从你的描述猜测,你有这样的:

class List 
{ 
    ... 
    List _rest; 
}; 

显然,这是不可能的。一个对象不能包含它自己类型的成员,因为这会导致无限递归!

也许你想要一个指针或引用的成员?

+0

嗯,我不知道它有多“明显”,它不像是一个不可能完成的任务,并且多通道编译器提供了大量的语言允许这样的事情发生。 – 2011-04-24 00:17:31

+1

@Ed - 它与多次传递无关,但是如何存储数据。一个内部列表的大小是什么,内部列表的内部列表与内部... – 2011-04-24 06:34:00

+0

@Bo Persson:你说得对,它与多次传递没有任何关系,这就是为什么成员显然(如指出的那样)是一个指针。我以为我删除了那条评论... – 2011-04-24 07:43:59