gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:18 25 4
gpt4 key购买 nike

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

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

主.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 ,我怎么错了?我怎样才能在两个类(class)之间传递名单?请帮忙!

编辑:我按照 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

最佳答案

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

class ClassB
{
typedef ClassA::MyStruct MyStruct;

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

关于c++ - 转换结构化列表 C++ 将列表从一个类传递到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com