首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++指针数组定义和引用的有关问题

2012-12-16 
C++指针数组定义和引用的问题#ifndef GRAMMAR_H#define GRAMMAR_H#includestringusing namespace stdna

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"; 
}


热点排行