SensorNode と呼ばれるクラスがあります。これには (特に) センサー オブジェクトのリンク リストが含まれています。ノードにはバッテリー残量のデータ メンバーがあり、各センサーには消費電力のデータ メンバーがあります。ノード内のセンサーのリンクされたリスト全体を調べて、ノードが残したバッテリーからセンサーが使用する電力量を差し引くことになっている processTimeClick という関数があります。残念ながら、「エラー、不正なアクセス コード」が表示されますが、その理由はわかりません。これが私が持っている機能です。誰かが私のロジックがどこに間違っているかを見てくれることを望んでいました。
void SensorNode::processTimeClick() {
if (batt == 0) {
}
else {
temp = mySensors;
do {
if (batt <=0) {
cout << "\nThis node has run out of battery\n";
func = 0;
break;
}
batt = (batt - (temp->SensEl->getPC()));
temp = temp->LLelement;
} while (temp->LLelement != NULL); //My code stops here and says "Thread 1:EXC_BAD_ACCESS (code=1, address=0x0)
}
}
わかりやすくするために: temp と mySensors はどちらも、"SensorBlock" 型 (リンクされたリスト オブジェクト) のポインター (SensorNode クラスで宣言されている) です。batt は、SnesorNode クラスの float データ メンバーです。
SensorBlock クラスの宣言は次のとおりです。
class SensorBlock {
friend class SensorNode;
SensorBlock * LLelement;
sensor * SensEl;
SensorBlock(sensor* senspoint);
};
SensorBlock::SensorBlock(sensor* senspoint) {
SensEl = senspoint;
LLelement = NULL;
}
助けてくれてありがとう!