我想在MFC对话框中建立一个堆栈,代码如下:
typedef struct {
double *elem;
int top;
}Stack;
然后就是初始化程序:
int InitStack(Stack *S)
{
S->elem = (double *) new (256*sizeof(double));
S->top =0;
}
但是始终不能通过编译,出现错误是:
error C2061: syntax error : identifier 'Stack'
error C2511: 'InitStack' : overloaded member function 'int (CStackDlg::Stack *)' not found in 'CStackDlg'
请各位大虾指教一下这是什么原因?
谢谢谢谢!

解决方案 »

  1.   

    typedef tagStack struct {
    double *elem;
    int top;
    }Stack;
      

  2.   

    它没有发现Stack这个结构,这个结构你是在哪儿定义的啊?
      

  3.   

    手误,位置错了,汗...typedef struct tagStack
    {
    double *elem;
    int top;
    }Stack;
      

  4.   

    S->elem = (double *) new double [256]
      

  5.   

    new后面跟一个类型,
    你别把new当malloc用阿
      

  6.   

    Stack结构是在类中定义的.定义为保护类型.
      

  7.   

    typedef struct {
    double *elem;
    int top;
    }
    Stack;int InitStack(Stack *S)
    {
    S->elem = (double *) new double[256];
    S->top =0;
    return 0;
    }
      

  8.   

    但编译错误不是因为new的问题
    可能头文件没有包含在StackDlg.h或StackDlg.cpp中
      

  9.   

    但是File中没有StackDlg.h或StackDlg.cpp文件啊!
    Stack只是作为一个结构在类中出现,并没有生成Stack类!
    是不是应该要包含stack.h啊?
    但是应该在哪里包含呢?
      

  10.   

    好像是typedef的问题吧?
    typedef struct tagStack{
    double *elem;
    int top;
    }Stack;
    以后,类变量栏中并没有Stack这个变量!