0

次のコードで「マクロ名は識別子である必要があります」というエラーが表示され続けますが、その理由はわかりません。私の知る限り、命名基準に違反したことはありません。これは私の「dllist.h」ファイルからのものです:

#ifndef _DOUBLY_LINKED_LIST_
#define _DOUBLY_LINKED_LIST_

template <class T>
class IntDLLNode {

friend class IntDLList;
 
    public:

        IntDLLNode() {next = prev = NULL;}

        IntDLLNode(const T& el, IntDLLNode *n = NULL, IntDLLNode *p = NULL) {
        info = el;
        next = n;
        prev = p;
        }

protected:

        T info;
        IntDLLNode<T> *next, *prev;
};

template <class T>
class IntDLList {

    public:

    IntDLList() {head = tail = NULL;}

    void addToDLLTail(const T& el);
    void addToDLLHead(const T& el);
    T deleteFromDLLTail();
    T deleteFromDLLHead();
    void deleteNode(int);
    void isInList(int) const;
    void addSorted(int);
    void printList();

private:

    IntDLLNode<T> *head, *tail;
};

#endif 

DOUBLY_LINKED_LISTやDOUBLYLINKEDLISTなどの名前も試しましたが、すべて同じエラーになります。

4

2 に答える 2

2

あなたは規則に違反しています。_DOUBLY_LINKED_LIST_は無効な識別子です。アンダースコアで始まり、直後に大文字が続くものはすべて、実装用に予約されています。

試してみてくださいDOUBLY_LINKED_LIST

また、のためにしようと#include <cstddef>NULLます。またはを使用します0。または、C ++ 11をサポートしている場合は、を使用してstd::nullptrください。

于 2012-12-10T00:21:23.627 に答える
0

試す

 #if !defined( _DOUBLY_LINKED_LIST_)

それ以外の

#ifdef _DOUBLY_LINKED_LIST_
于 2012-12-10T00:39:16.937 に答える