class Node;
class Stack
{
Stack(Node* next){
....
}
void func(void){
Node* test = NULL;
}
class Node
{
.....
}
}
如上示例代码,先声明一下class Node;现在这种为什么不能编译通过,Stack构造时会
报错,但是func()里面使用Node类型却不报错。我的问题:为什么参数类型是Node
会报错,但是函数里面使用确不会报错;
你这个class Node是放在class Stack内声明的么
你得把class Node;放进class Stack {的里面。
因为你前面声明的是class Node,可是你在类里面定义的是class Stack::Node,这俩不对应所以报错。
放在class Stack {里面声明class Node,就是声明class Stack::Node,这样才能对上。
class Stack
{
class Node;
Stack(Node* next) {
}
void func(void) {
Node* test = NULL;
}
class Node {
};
};
你外面的class Node的声明与里面的class Node定义不是同一个东西。外面的class Node相当于没有定义。
class Node;
class Stack
{
Stack(Node* next) {
}
void func(void) {
Node* test = NULL;
}
};
class Node {
};
这样应该也可以