Fout dat een functiedefinitie hier niet is toegestaan vóór ‘{‘ token

Ik heb problemen met deze code. Dit is een deel van mijn code voor infix naar prefix converter. Mijn compiler geeft me steeds de fout:

“Een functie-declaratie is hier niet toegestaan – voor ‘{‘ token”

Er zijn eigenlijk drie fouten in dit project. Mijn project is gepland voor september 2015, dus help alsjeblieft! Bij voorbaat dank.


Antwoord 1, autoriteit 100%

Je hebt de functiedefinities van je klassen binnen je main-functie, wat niet is toegestaan. Om dat op te lossen, moet je ze buiten plaatsen, maar om dat te doen, moet je de hele klas ook buiten de hoofdklasse plaatsen (omdat je het nodig hebt om in het bereik te zijn):

class A
{
public:
    void foo();
};
void A::foo()
{
    <...>
}
int main()
{
    <...>
}

Het is vermeldenswaard dat, hoewel het mogelijk is om de hele klassedefinitie in je main te plaatsen, dit niet de beste aanpak is:

int main()
{
    class A
    {
    public:
        void foo()
        {
            <...>
        }
    }
}

Antwoord 2, autoriteit 33%

Je mist een afsluitende }voor de hoofdfunctie.


Antwoord 3

U kunt de onderstaande code gebruiken:

#include <iostream>
 #include <string.h>
using namespace std;
const int MAX = 50 ;
class infix
{
private :
        char target[MAX], stack[MAX] ;
        char *s, *t ;
        int top, l ;
    public :
        infix() ;
        void setexpr ( char *str ) ;
        void push ( char c ) ;
        char pop( ) ;
        void convert( ) ;
        int priority ( char c ) ;
        void show( ) ;
};
infix::infix() //error
{
    top = -1 ;
    strcpy ( target, "" ) ;
    strcpy ( stack, "" ) ;
    l = 0 ;
}
void infix :: setexpr ( char *str )//error
{
    s = str ;
 //   strrev ( s ) ;
    l = strlen ( s ) ;
    * ( target + l ) = '\0' ;
    t = target + ( l - 1 ) ;
}
void infix :: push ( char c )//error
{
    if ( top == MAX - 1 )
        cout << "\nStack is full\n" ;
    else
    {
        top++ ;
        stack[top] = c ;
    }
}
int main()
{
     /* call your function from here*/
}

Other episodes