大家好,我已经在程序中找到了一些漂亮的树形层次结构。我发现了从底部到顶部的沟通问题。我现在如何设置它是在每个构造函数中我传递对象的引用创建新对象。简单的结构看起来像这样:
[控制器] - > [世界] - > [对象]
上升一层(从世界到控制器或从对象到世界)是可以的。但问题开始出现的地方是我尝试上升2层。 这是我如何设置它的简化结构:
或者Controller.h:
#include "World.h"
Class Controller {
public:
Controller() {
_worlds.push_back(World(*this));
)
void update() { // Called on a loop from main program loop
_worlds[0].update(); // Calls update of active world, in this case world[0]
}
vector<World> _worlds;
Camera _camera; // class with checkIfInView function
}
World.h:
#Include "Object.h"
Class Controller;
Class World {
World(Controller& ref) : _controller(ref) {
_objects.push_back(Object(*this));
_controller._camera.doStuff(); // works OK
}
void update() {
for (auto& i : _objects)
i.update();
}
vector<Object> _objects;
Controller& _controller;
}
Object.h:
Class World;
Class Object {
Object(World& ref) : _world(ref) {}
void update();
World& _world;
}
Object.cpp:
#include "Controller.h"
#include "World.h"
void Object::update() {
_world._controller._camera.checkIfInView(*this); // Read access violation
}
控制器保持一个相机对象,负责显示的内容。我需要的是一种方法让Objects调用checkIfInView来知道它们是否应该渲染。有没有其他方法可以做到这一点或解决方法?
编辑:更新了代码。