转换结构化列表c ++将列表从一个类传递到另一个类

时间:2013-08-16 22:55:24

标签: c++ list type-conversion

我的列表结构有问题我无法解决,我希望将这个列表从一个类传递到另一个类,这是我的代码:

ClassA.h

#include <list>

class ClassA
{
public:
   struct MyStruct
   {
    int a;
    int b;
   };

   std::list<MyStruct> myList;
   void fillList();
}

ClassA.ccp

#include "ClassA.h"
#include <fstream>
#include <iostream>

using namespace std;

void ClassA::fillList () {
  MyStruct c;
  c.a = 1;
  c.b = 2;
  myList.push_back(c);
}

ClassB.h

#include <list>

class ClassB
{
   struct MyStruct
   {
    int a;
    int b;
   };

   std::list<MyStruct> myListB;
   public:
      ClassB(std::list<MyStruct> l);
}

ClassB.ccp

#include "ClassB.h"
#include <fstream>
#include <iostream>

using namespace std;

ClassB::ClassB(std::list<MyStruct> l)
{
   myListB = l;
}

main.ccp

#include <iostream>
#include "ClassA.h"
#include "ClassB.h"

using namespace std;

int main()
{
ClassA a;
a.fillList();

ClassB(a.myList); //I receive the error here
}

我收到错误,我在上面评论,错误是no matching conversion for functional-style cast from'std::list<MyStruct>' to ClassB,我怎么了?我怎么能在两个班级之间传递名单?请帮忙!

修改 我在答案中建议a.lasram,所以现在我有了这个:

#include <list>
#include "ClassA.h" //i add this beacuse ask me and now i have a new error
class ClassB
{
typedef ClassA::MyStruct MyStruct;

std::list<MyStruct> myListB;
public:
  ClassB(std::list<MyStruct> l);
};

在此编辑之后,旧错误已解决,但此处有新错误:

ClassA.h

#include <list>

class ClassA //<-- here the error is: Redefinition of ClassA
{....
 ....
}

我怎么解决?请帮忙......

编辑2: 我用这个解决了第二个错误:

#ifndef __Terzo_Progetto__ClassA__
#define __Terzo_Progetto__ClassA__

#include <list>

class ClassA
{...
}

#endif

1 个答案:

答案 0 :(得分:2)

ClassA::MyStructClassB::MyStruct不同。您可以通过声明ClassB如下解决此问题:

class ClassB
{
   typedef ClassA::MyStruct MyStruct;

   std::list<MyStruct> myListB;
   public:
      ClassB(std::list<MyStruct> l);
};