'why cannot we initialize a node without using a pointer?

I have recently started learning data structure and as a beginner, I have a query while implementing linked list nodes, why do we have to initialize node using a pointer only?

class node{
    public:
    int data;
    node* next;
    node(int val){
        data = val;
        next = NULL;
    }
 };
 int main(){
    node* head = NULL;
    node head = NULL; // this throws an error which i cannot understand
 }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source