0

発生しているエラーについて少し混乱しています。「SensorNode」というクラスを作成しました。各 SensorNode にはセンサーのリンク リストがあります。SensorNode の 1 つのデータ メンバーは、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 に答える