代码之家  ›  专栏  ›  技术社区  ›  BigBerger

常规贴图对象

  •  0
  • BigBerger  · 技术社区  · 9 年前

    我正在尝试用C++为SFML创建一个资产管理器(很像Libgdx库中提供的资产管理器)。但我遇到了一个古老的问题,模板是C++最糟糕的部分之一。

    我试图让一个map对象保存泛型类型,键将是一个简单的字符串,数据将是我希望的任何类型 <string, int> ). 我希望在同一地图中有不同的类型,这样我可以加载许多不同的资产。

    我有没有办法做这样的事?

    谢谢你的帮助和考虑,任何一个小提示都会有很大的帮助。

    2 回复  |  直到 9 年前
        1
  •  0
  •   Some programmer dude    9 年前

    我重申了我对使用经理地图进行重新设计的意见。

    然后你可以有例如。

    class basic_asset_manager { ... };
    class image_asset_manager : public basic_asset_manager { ... };
    ...
    
    std::unordered_map<std::string, basic_asset_manager*> asset_managers;
    asset_managers["image"] = new image_asset_manager;
    ...
    
    // Load an image from a file
    asset_managers["image"]->load("some alias for image", "/some/file/name");
    ...
    
    // Get image
    image = asset_manager["image"]->get("some alias for image");
    

    也许不是 确切地 像这样,但你希望能抓住重点。

        2
  •  0
  •   talon24    9 年前

    您可以定义一个结构,或者在某些情况下可以使用联合作为映射的第二个参数传递。也许不是最优雅的解决方案,但可以完成任务。