#include<iostream>
#include<list>
#include<string>
using namespace std;class Node
{
public:
  int a;
  int b;
};void main()
{
  list<Node>l;
  list<Node>::iterator p;
  Node n;
  l.push_front(n);
  p=l.begin();
  *p->a=1;
}出错提示:error C2100: illegal indirection请问list里面不能装类的对象吗?
装入的话怎么访问其中节点的成员函数和变量?

解决方案 »

  1.   

    list里面能装类的对象,这是肯定的,容器本身的目的就是这样,装的对象的类最好实现默认构造函数和考贝构造函数。
      

  2.   

    #include<iostream>
    #include<list>
    #include<string>
    using namespace std;class Node
    {
    public:
      int a;
      int b;
    };void main()
    {
      list<Node> l;//here
      list<Node>::iterator p;
      Node n;
      l.push_front(n);
      p=l.begin();
      p->a=1; //here
    }改了下,试试
      

  3.   

    *p->a=1;
    问题在这里,list中并没有提供拷贝构造函数!所以用这种方式不对!
      

  4.   

    我试着写了一个,可以#include <iostream>
    #include <list>
    #include <conio.h>using namespace std;
    class SomeClass
    {
    public:
    SomeClass(){date=0;}
    SomeClass(int x){date=x;}
    //SomeClass(const SomeClass& sc){date=sc.date;} void SetDate(int x){date=x;}
    void Display(){std::cout<<date<<"\n";}
    ~SomeClass(){}
    private:
    int date;
    };void main()
    {
    SomeClass node1(1),node2(2),node3(3);
    list<SomeClass> mylist;
    list<SomeClass>::iterator myit;
    mylist.push_back(node1);
    //mylist.push_back(&node2);
    //mylist.push_back(&node3);
    myit=mylist.begin();
    myit->Display(); getch();
    }