gpt4 book ai didi

c++ - 列表中的结构不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:06 25 4
gpt4 key购买 nike

我有这个代码:

hpp:

 #include <list>
using namespace std;

class funcionario
{
public:
struct Dia {
int d;
int h;
int id;
int tipo;
};
funcionario ();
void eliminar(int dia, int hora);

private:
list<Dia> agenda;
};

cpp:

#include "myClass.hpp"

funcionario::funcionario(){
agenda = list<Dia> ();
}

void funcionario::eliminar(int dia, int hora) {
list<funcionario::Dia>::iterator it;
it = agenda.begin();
while(it != agenda.end() && (*it).d <= dia) {
if((*it).d == dia && (*it).h == hora) {
agenda.erase(it);
return;
}
++it;
}
}

我得到这个编译错误:

  Funcionario.cpp: In constructor ‘funcionario::funcionario()’:
Funcionario.cpp:5: error: cannot convert ‘std::list<funcionario::Dia, std::allocator<funcionario::Dia> >’ to ‘int’ in assignment
Funcionario.cpp: In member function ‘void funcionario::eliminar(int, int)’:
Funcionario.cpp:9: error: request for member ‘begin’ in ‘((funcionario*)this)->funcionario::agenda’, which is of non-class type ‘int’
Funcionario.cpp:10: error: request for member ‘begin’ in ‘((funcionario*)this)->funcionario::agenda’, which is of non-class type ‘int’
Funcionario.cpp:11: error: request for member ‘end’ in ‘((funcionario*)this)->funcionario::agenda’, which is of non-class type ‘int’

我不知道我做错了什么。

最佳答案

不确定您要实现的目标,但只需要使用完整的函数定义来充实代码。我得到了这个来编译:

#include <list>
class myClass
{
public:
myClass();
struct myStruct {
int myInfo;
};
void something();
void doSomething(myStruct & ms);

private:
std::list<myStruct> myList;
};


myClass::myClass(){
myList = list<myStruct> ();
}

void myClass::something() {
std::list<myStruct>::iterator it;
it = myList.begin();
while(it != myList.end()) {
doSomething(*it);
++it;
}
}

顺便说一句(或者可能直接相关,不确定)——正如其他人所说,myClass() 中的 myList 的复制初始化是不必要的。 list<> 默认构造函数将做正确的事情,而且效率更高。

关于c++ - 列表中的结构不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16502502/

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