我似乎无法使Boolean
操作像我认为的那样有效。
/////.h file
class linkD
{
private:
struct ListNode{
driver driver; ////class
ListNode *next;
};
ListNode *head;
///.cpp file
void linkD::deleteNode(driver d){
ListNode *nodePtr;
ListNode *previousNode;
ListNode *newNode;
newNode=new ListNode;
newNode->next=NULL;
newNode->driver=d;
if(!head)
return;
if(head->driver==d) //the problem is right here.
{
nodePtr=head->next;
delete head;
head=nodePtr;
}
head->driver==d
给出一个红线(无操作符“==”匹配这些操作数)
我认为这是因为head->driver
未初始化但我可能错了,我不确定如何初始化它,因为它在未初始化的结构中。
答案 0 :(得分:1)
那是因为驱动程序是一个类对象。
您必须为类定义相等运算符。
您是否期望类对象成为指针(如在Java中,即它们可以为NULL)
如果要测试驱动程序对象的相等性,请按以下方式定义:
class driver
{
public:
bool operator==(driver const& rhs) const
{
return x == rhs.x && y == rhs.y && z == rhs.z;
}
private:
int x;
int y;
int z;
};
int test
{
driver x;
driver y;
if (x == y) // this calls x.operator==(y)
{ // So y is the rhs parameter.
}
}
答案 1 :(得分:1)
代码中的class/struct driver
似乎没有定义operator ==()
,因此编译器正在抱怨。