我的列表结构有问题我无法解决,我希望将这个列表从一个类传递到另一个类,这是我的代码:
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
答案 0 :(得分:2)
ClassA::MyStruct
和ClassB::MyStruct
不同。您可以通过声明ClassB
如下解决此问题:
class ClassB
{
typedef ClassA::MyStruct MyStruct;
std::list<MyStruct> myListB;
public:
ClassB(std::list<MyStruct> l);
};