私はbsd-listを使って取り組んできました。そして、リストを作成して単純な整数要素を挿入する非常に単純なプログラムを作成しました。コードは次のとおりです。
#include<iostream>
#include<stdlib.h>
#include"bsd-list.h"
using namespace std;
struct foo {
int a;
LIST_ENTRY(foo) pointers; // pointers is the object of the structure generated by List Entry
} *temp, *var, *ptr;
LIST_HEAD(foo_list, foo);
int main(void)
{
LIST_HEAD(foo_list, foo) head;
LIST_INIT(&head);
struct foo *item1 = new foo;
struct foo *item2 = new foo;
struct foo *item3 = new foo;
item1->a = 60;
item2->a = 120;
item3->a = 240;
LIST_INSERT_HEAD(&head, item1, pointers);
LIST_INSERT_AFTER(item1, item2, pointers);
LIST_INSERT_BEFORE(item2, item3, pointers);
//Displaying inner details of list
{
cout<<"HEAD's Address : "<<head.lh_first<<endl;
cout<<"Item 1 next value : "<<(item1)->pointers.le_next<<endl;
cout<<"Item 1 prev value : "<<*(item1)->pointers.le_prev<<endl;
cout<<"HEAD's Address : "<<head.lh_first<<endl;
cout<<"Item 2 next value : "<<item2->pointers.le_next<<endl;
cout<<"Item 2 prev value : "<<*(item1)->pointers.le_prev<<endl;
cout<<"HEAD's Address : "<<head.lh_first<<endl;
cout<<"Item 3 next value : "<<item3->pointers.le_next<<endl;
cout<<"Item 3 prev value : "<<*(item3)->pointers.le_prev<<endl;
}
ptr = head.lh_first;
for(;;ptr = ptr->pointers.le_next)
{
cout<<ptr->a<<endl;
}
return (0);
}
ステートメント*(item1)->pointers.le_prev
を使用して、に含まれるアドレスの値を取得していますle_prev
。
**(item1)->pointers.le_prev
ただし、値60を取得するように何かしたいのですが、エラーが発生しています。逆参照を正しく使用するための適切な構文は何ですか?