错误在'{'标记之前不允许使用函数定义

时间:2015-08-19 06:57:28

标签: c++

void main1()    
{

    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( );
    };
    void 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;
        }
    }
}

我遇到了这段代码的问题。这是我的转换为前缀转换器的代码的一部分。我的编译器一直给我错误:

  

“此处不允许使用函数声明 - 在'{'token”

之前

这个项目实际上有三个错误。我的项目将于2015年9月到期,敬请帮忙!提前谢谢。

3 个答案:

答案 0 :(得分:4)

您的main函数中有类的函数定义,这是不允许的。要解决这个问题,你应该将它们放在外面,但为了做到这一点,你需要将整个类放在main之外(因为你需要它在范围内):

class A
{
public:
    void foo();
};

void A::foo()
{
    <...>
}

int main()
{
    <...>
}

值得注意的是,尽管可以将整个类定义放在主要内容中,但这不是最好的方法:

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

答案 1 :(得分:0)

您缺少主要功能的结束}

答案 2 :(得分:0)

你可以使用下面的代码

ActiveRecord_Relation