C++指针数组定义和引用的问题
#ifndef GRAMMAR_H
#define GRAMMAR_H
#include<string>
using namespace std;
namespace grammar_space
{
struct Grammar//文法栈
{
char Non_Terminal;//既是非终结符也是文法产生式的左部
char Terminal;
string Right;
};
typedef Grammar* GrammarPtr;
GrammarPtr GM_Ptr[15];
//LL(1)文法的分析表,其中“&”表示空
//为了方便 e 表示 E' ,t 表示 T'
GM_Ptr[0]=new Grammar;
GM_Ptr[0]->Non_Terminal='E';
GM_Ptr[0]->Terminal='i';
GM_Ptr[0]->Right="Te";
错误指出GM_Ptr[0]的引用不合法,原文是这样的:
"GM_Ptr[0]=new Grammar;“这一行cannot allocate an array of constant size 0
我想问的是,这个怎么错了?15是常量啊?
[最优解释]
与数组无关的,只是因为不能直接在名字空间里写赋值语句
[其他解释]
编译器以为你要定义一个数组,数组名为 GM_Ptr,但大小是0,于是就报错,然后还有一堆相关错误
[其他解释]
这是干吗,你可以把他放到函数中
void f()
{
//LL(1)文法的分析表,其中“&”表示空 //为了方便 e 表示 E' ,t 表示 T'
GM_Ptr[0]=new Grammar;
GM_Ptr[0]->Non_Terminal='E';
GM_Ptr[0]->Terminal='i';
GM_Ptr[0]->Right="Te";
}