0

我只是对我遇到的错误有点困惑。我创建了一个名为“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”中放入什么。如果我解决了上述错误,我可能能够更好地理解新传感器的添加过程。提前感谢您提供的任何帮助!!

4

1 回答 1

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;

    }
}
于 2013-06-02T19:53:55.133 回答