代码之家  ›  专栏  ›  技术社区  ›  Schilcote

各种标记之前应为主表达式

  •  3
  • Schilcote  · 技术社区  · 11 年前

    以下代码:

    class queuenode {
    public:
        queuenode();
        queuenode(cargo *mydata);
        ~queuenode() {delete cargo;} //Queuenodes delete their cargo on destruction - note that queuenodes DON'T free their neighbour, that's up to the queue class
    public:
        queuenode *next;
        int pri; //this should always be equal to our cargo's pri
        cargo *data;
    };
    
    queuenode::queuenode(void) {
        next= (queuenode *) NULL; 
        cargo = (cargo *) NULL; //default const creates a null queuenode - pri is left undefined
    }
    
    queuenode::queuenode(cargo *mydata) {
        //Convert constr creates a queuenode wrapping a cargo, also setting pri to its pri
        data=mydata; 
        pri=mydata->pri; 
        next=(queuenode *) NULL;
    }
    

    给出以下错误:

    pq_linkedlist.cpp: In destructor 'queuenode::~queuenode()':
    pq_linkedlist.cpp:19:28: error: expected primary-expression before ';' token
    pq_linkedlist.cpp: In constructor 'queuenode::queuenode()':
    pq_linkedlist.cpp:28:8: error: expected unqualified-id before '=' token
    

    我不知道发生了什么,也不知道为什么。互联网上有各种各样的人都有相同的错误信息,但他们的所有问题似乎都与额外的分号有关,我很确定我没有。

    1 回复  |  直到 11 年前
        1
  •  6
  •   orlp    11 年前
    ~queuenode() {delete cargo;}
    

    应该是:

    ~queuenode() {delete data;}
    

    cargo 是类型, data 是变量。说 delete cargo 跟说一样有道理 delete int .

    同样,这一行也是错误的:

    cargo = (cargo *) NULL;