2012-03-07 1 views
-1

Я получаю сообщение об ошибке в * функции insert_nodes:ошибка: ожидается, конструктор, деструктор, или преобразование типов до того «(» лексема

error: expected constructor, destructor, or type conversion before '(' token

У меня также есть проблемы в одной и той же функции, что ВОФК, что я должны переобъявить ВНУТР узлов "в качестве параметра в функции, но я думаю, что не надо писать так:.

*insert_nodes(start, int nodes) 

вместо того, чтобы, как это:

*insert_nodes(start,nodes) 

Другая ошибка, полученная get в getch(). При компиляции в Netbeans он просто показывает ошибку на этом месте, но не упоминает, какой тип ошибки.

struct tree_traversal 
{ 
    int data; 
    tree_traversal *left; //left subtree 
    tree_traversal *right; //right subtree 
}; 

tree_traversal *insert_nodes(tree_traversal *start, int nodes); 
void preOrderTraversal(tree_traversal *start); 
void postOrderTraversal(tree_traversal *start); 
void inOrderTraversal(tree_traversal *start); 
int counter = 1; 

int main(int argc, char **argv) 
{ 
    int choice, nodes; 
    do 
    { 
     switch(choice) 
     { 
      case 1: 
      cout<<"\n\t\a\a Enter the Values:\a\a"; 
      cin>>nodes; 
      start=insert_nodes(start,nodes); 
      break; 

      case 2: 
      cout<<"\n\t\a\a The Values for In-Order Tree traversal is: \a\a"<<endl; 
      preOrderTraversal(start); 
      break; 

      case 3: 
      cout<<"\n\t\a\a The Values for In-Order Tree traversal is: a\a"<<endl; 
      postOrderTraversal(start); 
      break; 

      case 4: 
      cout<<"\n\t\a\a The Values for In-Order Tree traversal is: \a\a"<<endl; 
      inOrderTraversal(start); 
      break; 

      case 5: 
      exit(0); 
     } 
    } while(choice != 5); 
    return 0; 
} 

tree_traversal *insert_nodes(tree_traversal *start, int nodes) 
{ 
    if(start == NULL) 
    { 
     start = new tree_traversal; 
     start ->left = start ->right = NULL; 
     start ->data = nodes; 
     counter++; 
    } 
    else if(counter%2 == 0) 
     start ->left = insert_nodes(start ->left,nodes); 
    else 
     start ->right = insert_nodes(start ->right,nodes); 

    return(start); 
} 

void preOrderTraversal(tree_traversal *start) 
{ 
    if(start != NULL) 
    { 
     cout<<start ->data; 
     preOrderTraversal(start->left); 
     preOrderTraversal(start->right); 
     getch(); 
    } 
} 

void postOrderTraversal(tree_traversal *start) 
{ 
    if(start != NULL) 
    { 
     postOrderTraversal(start->left); 
     postOrderTraversal(start->right); 
     cout<<start ->data; 
     getch(); 
    } 
} 

void inOrderTraversal(tree_traversal *start) 
{ 
    if(start != NULL) 
    { 
     inOrderTraversal(start->left); 
     cout<<start ->data; 
     inOrderTraversal(start->right); 
     getch(); 
    } 
} 
+0

в какой строке ошибка? – Alecs

+0

вы не определили start в main(), и определение метода insert_nodes не определяет тип запуска – dave

+0

@Alecs, * insert_nodes (start, int nodes) // в этой строке // здесь ошибка: ожидаемый конструктор , деструктор или преобразование типов до '(' токен –

ответ

4
*insert_nodes(start, int nodes) 

должен быть

tree_traversal *insert_nodes(tree_traversal *start, int nodes) 
^^^^^^^^^^^^^^^    ^^^^^^^^^^^^^^^ 

Вы забыли упомянуть тип данных для аргумента функции типа возвращаемого & в определении функции.

Да, вам необходимо указать типы данных аргументов функции в определении функции.

+0

, но я получаю много ошибок ... если я это сделаю. Я уже объявлял тип данных глобальным, я хочу снова его вернуть. –

+0

@visanio_learner: Какие ошибки? Вы можете создать минимальный образец кода, который демонстрирует ошибки? –

+0

error: 'getch' не был объявлен в этой области это единственная ошибка, которую я получаю, я думаю, мне нужно объявить int variable, тогда я должен назначить на getch() fun фикция. –

0

В вашем коде:

*insert_nodes(start, int nodes) 

начала параметра не имеет типа!