我有一个无法解决的列表结构问题,我想将此列表从一个类传递到另一个类,这是我的代码:
类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