Arjit Mishra
Arjit Mishra

Reputation: 9

error : Function definition is not allowed here

It is showing errors in line 22 and 25

#include<bits/stdc++.h>

using namespace std;

class node{

public:

    int data;
    node *next;
    node (int data){
    this->data = data;
}

};

int main() {

     node *n1 = new node(10);
     node *n2 = new node(15);
     node *n3 = new node(20);

     node *head = n1;
     head->next = n2;
     n2->next = n3;
     n3->next = NULL;

     void main(){
         traverse(head);
     }
     void traverse(node head){
         node cur = head;

     }
 }

Upvotes: 0

Views: 566

Answers (1)

In main():

int main() {

     node *n1 = new node(10);
     node *n2 = new node(15);
     node *n3 = new node(20);

     node *head = n1;
     head->next = n2;
     n2->next = n3;
     n3->next = NULL;

     void main(){
         traverse(head);
     }
     void traverse(node head){
         node cur = head;

     }
 }

There are some problems:

  • In C++, you can't define a function inside a function.
  • Even if you don't define inside main(), you can't define two main() functions. Also, void main() isn't valid C++.

If you want to call traverse() when running the program, try:

class node
{
public:

    int data;
    node *next;
    node(int inputData = 0, node *inputNext = nullptr) : data{inputData}, next{inputNext} // ctor
    {

    }

    node (int data)
    {
         this->data = data;
    }

};

void traverse(node head)
{
    node cur = head;
}

int main()
{
    node *n1 = new node(10);
    node *n2 = new node(15);
    node *n3 = new node(20);

    node *head = n1;
    head->next = n2;
    n2->next = n3;
    n3->next = NULL;

    traverse(head);

}

Also, #include <bits/stdc++.h> and using namespace std; are all bad practice, so avoid using it.

Upvotes: 2

Related Questions