各种标记之前的预期主表达式

Expected primary-expression before various tokens

以下代码:

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

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

~queuenode() {delete cargo;}

应该是:

~queuenode() {delete data;}

cargo是类型,data是变量。说 delete cargo 和说 delete int.

一样有意义

同样这一行是错误的:

cargo = (cargo *) NULL;