gpt4 book ai didi

C++ 编译器错误 : "isLeaf() has not been declared" - but it was

转载 作者:太空狗 更新时间:2023-10-29 19:39:33 24 4
gpt4 key购买 nike

#include <cstdlib>
#include <iostream>
#include "Node.h"
#ifndef HW4_H
#define HW4_H
using namespace std;
/**
You are to implement the two functions in this class.
You can add any other method or members to it as well.
However, you cannot change their signature.
**/
class HW4{

public:
int count(Node* r) const
{
if(r->next==NULL&&r->bro==NULL) { return 0;}
if(r.isLeaf())
{
return ((1+count(r->next)+count(r->bro)));
}
count(r->next);
}

/*
This method will return true if the tree rooted at node sn can answer
the demand induced by its leaves.
*/
bool canDemandBeAnswered(Node* root)
{
if(count(root)>(root.getCapacity()))
{
return 0;
exit(0);
}
else
{
return (canDemandBeAnswered(root->next)&&canDemandBeAnswered(root->bro));
}
}




/*
This method should return a linked list of nodes representing the
customers with the overall highest revenue.
The resulting list should conform to the capacity limitations.
*/
// Node* getBestCustomers(Node* root);


};

#endif

#include <cstdlib>
#ifndef NODE_H
#define NODE_H

/**
The Node class. You must implement the two methods isLeaf() and addChild(Node*) below.
Otherwise, you can add any methods or members your heart's desire.
The only limitation is that they have to be in this file.
**/
class Node {
private:
int capacity;
int price;


public:
/**
Hint: to be used for saving the Node's children and for returning the linked list
**/
Node* next;
Node* bro;

Node(){
capacity = 0;
price = 0;
}
Node(int capacity_){
capacity = capacity_;
price = 0;
}

//should return true if this node has no children, false otherwise.

//this method adds a child to this node.


int getCapacity(){
return capacity;
}


int getPrice(){
return price;
}

void setPrice(int price_){
price = price_;
}


bool isLeaf()
{
if((this->next)->capacity==0)
return 1;
else return 0;
}


void addChild(Node* child)
{
Node* temp;
if(this->next!=NULL)
{
temp=this->next;
child->bro=temp;
this->next=child;
}
else
this->next=child;
}
};




#endif

我收到以下错误:“isLeaf() 尚未声明”。我不明白为什么 - 我都声明了。

最佳答案

bool canDemandBeAnswered(Node* root)
{
if(count(root)>(root.getCapacity()))

这会尝试在 Node * 上调用 getCapacity。但是 Node * 没有名为 getCapacity 的函数——Node 有。

您可以使用 (*root).getCapacity() 或简写 root->getCapacity()

      if(r.isLeaf())

你在这里遇到了同样的问题。 r 是一个Node *

关于C++ 编译器错误 : "isLeaf() has not been declared" - but it was,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com