2

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

类A.h

#include <list>

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

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

A类.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);
}

B类.h

#include <list>

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

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

B类.ccp

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

using namespace std;

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

主文件

#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);
};

此编辑后,旧错误已解决,但这里有新错误:

类A.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
4

1 回答 1

2

ClassA::MyStruct并且ClassB::MyStruct是不同的。ClassB您可以通过如下声明来解决此问题:

class ClassB
{
   typedef ClassA::MyStruct MyStruct;

   std::list<MyStruct> myListB;
   public:
      ClassB(std::list<MyStruct> l);
};
于 2013-08-16T23:02:53.973 回答