ページ 11

構造体ポインタのリストからメンバにアクセスできない

Posted: 2010年10月24日(日) 12:03
by 帰国部
#include <iostream>
#include <list>
using namespace std;

struct Element
{
int i;
};

int main()
{
list<Element*> l;
list<Element*>::iterator it;

Element e = {3};
l.push_front(&e);

it = l.begin();
cout << *it->i << endl;

return 0;
}



これをコンパイルしようとすると、"-> か ->* の左には構造体のポインタが必要"とエラーが出てコンパイルできません。
どこがいけないのでしょうか。

Re:構造体ポインタのリストからメンバにアクセスできない

Posted: 2010年10月24日(日) 12:25
by qwea
cout << *it->i << endl;

の部分ですが、演算子の優先度が原因でおかしくなっているのだと思います。

cout << (*it)->i << endl;  ではないでしょうか。

Re:構造体ポインタのリストからメンバにアクセスできない

Posted: 2010年10月24日(日) 12:32
by 帰国部
cout << (*it)->i << endl;に直したら無事コンパイルできました。
ありがとうございましたm(_ _)m

Re:構造体ポインタのリストからメンバにアクセスできない

Posted: 2010年10月24日(日) 12:32
by 帰国部
解決し忘れました