它讓我在以下方面收到此錯誤Event.h:
欄位“組”具有不完整的型別“組”
對于背景關系,我想要Group一個擁有所有者(來自 class Person)的類,它由一個人的向量(class Person)組成:
組.h
class Person;
#include "Person.h"
Class Group
{
private:
std::string name;
std::vector<Person> people;
int size = 0;
Person owner;
public:
Group(Person owner);
~Group();
}
在Person課堂上,我只想擁有一個串列向量(類 List,對于這個特定錯誤并不重要)。請注意,在Person類中我有一個建構式Person(int id);
在Event班級中,我想邀請一組可以保存為Group班級的人:
事件.h
class Group;
#include "Group.h"
class Event
{
private:
std::string tittle;
std::string description;
bool locked;
bool checked;
Group group;
public:
Event(std::string tittle);
~Event();
}
為什么Person我的群組中沒有所有者?
uj5u.com熱心網友回復:
您正在無序地定義某些東西。也許是#ifdef 守衛。
這編譯得很好:
class Person {};
class Group
{
private:
std::string name;
std::vector<Person> people;
int size = 0;
Person owner;
public:
Group( Person owr );
~Group();
};
class Event
{
private:
std::string tittle;
std::string description;
bool locked;
bool checked;
Group group;
public:
Event(std::string tittle);
~Event();
};
Godbolt:https ://godbolt.org/z/f785vK1dq
uj5u.com熱心網友回復:
以下對我來說很好用(在線演示):
人.h
#ifndef Person_H
#define Person_H
class Person
{
};
#endif
組.h
#ifndef Group_H
#define Group_H
#include "Person.h"
#include <string>
#include <vector>
class Group
{
private:
std::string name;
std::vector<Person> people;
int size = 0;
Person owner;
public:
Group(Person owner) : owner(owner) {}
};
#endif
事件.h
#ifndef Event_H
#define Event_H
#include "Group.h"
#include <string>
class Event
{
private:
std::string tittle;
std::string description;
bool locked = false;
bool checked = false;
Group group;
public:
Event(std::string tittle) : tittle(tittle), group(Person{}) {}
};
#endif
主程式
#include <iostream>
#include "Event.h"
int main()
{
Event evt("title");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/380625.html
