是否可以使用循环对其所有类型执行类方法
Is it possible to use a loop to perform a class method on all of it's type
我正在尝试编写一个tile引擎,我的一个类中有一个方法,我需要一种能够使用一个循环为该类的所有现有实例执行该方法的方法,例如,如果我有一个名为tile的GameObject,和另一个被称为敌人的人,是否有一种方法可以调用GameObject::为他们两个渲染,而不必在循环中指定他们的名字?
您要查找的是观察者模式。
基本上,您试图为一个类的多个实例触发一个事件。
您将有一个观察器类,将要通知的类的所有实例(可能在构造函数中)注册到该类。
你必须做一些工作。例如,在GameObject类的构造函数中,您可以将指向正在创建的GameObject的指针添加到列表中。然后在析构函数中,可以从同一列表中删除指向被销毁对象的指针。这样,你就有了一个指向所有实时GameObject的指针列表,只要你觉得需要,你就可以循环浏览。
class GamePublisher{
public:
void Attach(GameObject *);
void Detach(GameObject *);
void RenderGameObjects();
static GamePublisher& GetPublisher();
}
void GamePublisher::RenderGameObjects(){
//This is just an example for simplicity, the syntax my be a little off, assuming you have knowledge of functors.
std::for_each(gameObjectContainer.begin(), gameObjectContainer.end(), render_functor);
}
//somewhere else...
class GameObject{
public:
virtual void Render()=0;
}
class Tile : public GameObject
{
public:
virtual void Render();//your implementation...
Tile();
}
Tile::Tile() //: member initilizations...{
GamePublisher::GetPublisher.Attach(this);
}
您将不得不处理附加/分离,并且取决于多线程,必须想出或重用一种机制来在多个线程之间处理此问题。除此之外,我认为这对你有用。祝你好运
您可以处理从析构函数分离。
相关文章:
- 在C++中对T*类型执行std::move的意外行为
- 仅在函数模板中为那些定义了函数的类型执行函数
- C++将一个指针分配给另一个指针时执行的类型检查
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- Eclipse 可执行架构类型
- 如何检查参数包是否具有执行顺序中的确切类型
- 如何对模板类型强制执行常量
- 执行特定函数取决于类型
- 根据运行时提供的类型执行模板函数
- 是否无法对长双数据类型执行openMP矢量化操作
- 是否可以使用循环对其所有类型执行类方法
- 如何对嵌套类型执行部分模板专用化
- 根据模板变量类型执行不同的方法
- 如果可变参数包为空,则对可变参数包类型执行替换
- 无法对代码合成 XML 类型执行操作
- 对模板中的每个其他类型执行static_assert
- 使用模板化的变量类型执行特定于上下文的操作
- 如何对模板中的字符串数据类型执行几组不同的指令
- 根据c++中的特定类型执行代码