【发布时间】:2017-08-09 16:32:59
【问题描述】:
您好,我是 C++ 新手,我正在构建一个程序来模拟一群兔子。我有点坚持如何解决这个关于如何获取方法来识别我的全局指针变量的问题。当我尝试编译我的程序时出现此错误。
enter code here
main.cpp: In function ‘bool ageCheck(BunnyNode*)’:
main.cpp:133:5: error: ‘head’ was not declared in this scope
if(head){
^
我还有几个与此类似的错误。我的印象是,如果我理解为什么会出现这个错误,我将能够解决其他错误。我从 ageCheck() 方法中选择了一个错误,该方法应该遍历兔子的链表并检查它们的年龄。 这就是我所拥有的
enter code here
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
//#include "listofbunny.h"
using std::cin;
using namespace std;
typedef struct BunnyNode {
string* name;
int age;
bool gender;
string* color;
bool radioactive_bunny;
BunnyNode *next;
BunnyNode *head;
BunnyNode *tail;
BunnyNode *current;
}
char menu();
int randomGeneration(int x);
void generateFeatures(BunnyNode * newBunny);
void startCheck(int pass);
void sizeCheck(bool& terminate);
bool fatherCheck(BunnyNode * bunny, bool& fatherPresent);
bool motherCheck(BunnyNode * bunny);
bool ageCheck(BunnyNode * bunny);
void addBunnyAge();
void addBabyBunny();
void addBunny();
void addBunny(BunnyNode * mother);
int mutantCount();
void mutantTransform();
void purge();
string getGender(BunnyNode * bunny);
string getName(BunnyNode * bunny);
int getColonySize();
void printColony();
void printFeature(BunnyNode * bunny);
void printSize();
bool ageCheck(BunnyNode * bunny){
if(head){
if(bunny->age >= MAX_AGE && bunny->radioactive_bunny == false){
return 1;
}
else if(bunny->age >= MAX_MUTANT_AGE && bunny->radioactive_bunny){
return 1;
}
else
return 0;
}
}
【问题讨论】:
-
没有
head,而是BunnyNode::head。如果ageCheck是BunnyNode的成员函数,那么您现在可能正在摇摆不定,但事实并非如此。顺便说一句,你不必在 C++ 中做typedef struct的东西。 -
附录:您似乎将链表与节点混为一谈。这将导致您在未来遇到问题。
-
@user4581301 所以我可以做
struct BunnyNode? -
struct BunnyNode { guts of BunnyNode };之后你可以直接调用它BunnyNode -
@user4581301
;缺失
标签: c++ pointers global-variables