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月到期,敬请帮忙!提前谢谢。
答案 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