c++,类中类语法,参数类型声明问题

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 {
};
这样应该也可以