所以,我知道有很多关于堆栈溢出的问题,试图处理循环依赖关系。但这些都不能真正回答我的问题,如果有可能让两个类互相认识,更重要的是,互相获取信息。所以,基本上,我读过你可以使用前向声明,但是使用前向声明,我不能访问任何字段。 假设我们有一个名为Scene的类和一个名为EntityBase的类,它们的定义如下: EntityBase.h 场景h 在EntityBase也可以完全访问场景的同时,如何打印出场景的名称(并使用场景的各种方法)?所以,如果你能告诉我怎么做,我会非常感激,因为以后我可能需要访问每个字段和/或方法。#pragma once
#include <string>
#include "Scene.h"
class EntityBase
{
public:
std::string entityId;
Scene scene;
EntityBase(std::string entityId);
/*
This method will be called when this object is added to the scene
*/
void onAddedToScene(Scene* scene);
/*
This method will be called when this object is removed from the scene
*/
void onRemovedFromScene(Scene* scene);
};
#pragma once
#include <vector>
#include <string>
#include "EntityBase.h"
class Scene
{
public:
std::vector<EntityBase> entities;
std::string name;
Scene(std::string name);
void addToScene(EntityBase& entityBase);
};
因为是C++17标准,所以不需要
#pragma once
#include <vector>
#include <string>
class EntityBase; // Forward declaration
class Scene
{
public:
std::vector<EntityBase> entities;
std::string name;
Scene(std::string name);
void addToScene(EntityBase& entityBase);
};
当然,您需要在使用
由于
如果您构建的目标是较早的C++标准(C++14或更早),那么您必须具有向量的
作为一种可能的解决办法,要么使