jeudi 2 novembre 2017

'.' cannot appear in a constant-expression

template <class T>
struct stkNode
{
    BinTreeNode<T> *ptr;
    enum tag {R,L}tag;
    stkNode(BinTreeNode<T> *N = NULL) : ptr(N),tag(L){}
};

template<class T>
void BinaryTree<T>::PostOrder(void(*visit)(BinTreeNode<T> *p))
{
    SeqStack<stkNode<T> > S;
    stkNode<T> w;
    BinTreeNode<T> *p = root;
    do
    {
        while (p != NULL)
        {
            w.ptr = p;
            w.tag = w.L;
            S.Push(w);
            p = p->leftChild;
        }

        bool continuel = true;
        while (!S.IsEmpty() && continuel)
        {
            S.Pop(w); 
            p = w.ptr;

            switch (w.tag)
            {
            case w.L: //---------------this line--------------------------
                w.tag = w.R;
                S.Push(w);
                continuel = false;
                p = p->rightChild;
                break;
            case w.R: // -----------and this line-------------
                visit(p);
                break;
            }
        }
    } while (!S.IsEmpty());
}

When i compile it on Devc++, it will be an error looks like: [Error] '.' cannot appear in a constant-expression. But when i compile it on Visual Studio 2015,the error will not happen. Why??????

Aucun commentaire:

Enregistrer un commentaire