我对我得到的错误感到有些困惑。我创建了一个名为“SensorNode”的类,每个SensorNode都有一个链接的传感器列表。 SensorNode的一个数据成员是名为mySensors的SensorBlock(链接列表)指针。 mySensors应该指向传感器节点所拥有的传感器链接列表中的第一个传感器。这是SensorNode的类声明:
class SensorNode {
char* NodeName;
int NodeID;
LOCATION Node1;
float batt;
int func;
SensorBlock *mySensors;
public:
SensorNode(char *n, float x, float y, float z, int i, float ah);
void print();
void setOK(int o);
int getOK();
void setLOC(float longi, float lat, float h);
int amIThisSensorNode(char *n);
void addSensorToNode(sensor *s);
};
这里是SensorBlock的类声明:
class SensorBlock {
friend class SensorNode;
SensorBlock * LLelement;
sensor * SensEl;
};
我的问题在于我的void addSensorToNode(sensor * s)函数。参数s指向一个传感器,该传感器应该被添加到属于该节点的传感器列表的末尾。我无法弄清楚如何做到这一点,因为它不是我正在创建和添加的新传感器,而是指向我正在添加的传感器的指针。
这是我到目前为止所拥有的:
void SensorNode::addSensorToNode(sensor *s) {
if(mySensors == '\0') //mySensors is first initialized to NULL
{
mySensors = s; //I get an error on this line.
}
else {
}
}
我不知道如何解决上面这行的错误,当mySensors不再等于null时,我不知道在“else”中放什么。如果我解决了上述错误,我可能能够更好地理解新传感器的添加过程。提前感谢您提供任何帮助!!
答案 0 :(得分:1)
mySensors = s
应为mySensors.SensEl= s
因为mySensors的类型为SensorBlock
,而s为sensor
void SensorNode::addSensorToNode(sensor *s) {
if(mySensors == NULL) //mySensors is first initialized to NULL
{
mySensors = new SensorBlock();
mySensors->SensEl = s; //I get an error on this line.
mySensors->LLelement = NULL;
}
else {
SensorBlock newBlock = new SensorBlock();
newBlock->SensEl = s;
newBlock->LLelement = NULL;
mySensors->LLelement = newBlock;
}
}