如何打印列表<class *> ls?</class *>

时间:2011-06-29 11:43:49

标签: c++

我在下面的代码的最后两行做错了什么?我收到一个错误:

  

请求‘name’中的成员‘t.std::_List_iterator<_Tp>::operator* [with _Tp = a*]()’,该成员属于非类型‘a*’

#include <dlfcn.h>
#include <iostream>
#include "/home/developer/Desktop/MsgSphSDK1/test1_sdk/libsdk_MS.hpp"
#include <list>
#include <typeinfo>
#include <string>

using namespace std;

class a
{
public:
    string name;
    int age;
};

int main()
{
    a* l = new a();
    l->name = "me";
    l->age = 1;

    list<a*> ls;
    list<a*>::iterator t;

    for (t = ls.begin(); t != ls.end(); ++t) 
        cout << (*t).name << endl;
}

1 个答案:

答案 0 :(得分:6)

你应该写

cout<<(*t)->name<<endl

t是一个迭代器,(*t)为您提供a*(指向类a对象的指针)。因此,要访问对象的成员,您应使用->,而不是.