【问题标题】:Which one to use Value vs std::string in cocos2d-x V3 C++?在 cocos2d-x V3 C++ 中使用 Value vs std::string 哪一个?
【发布时间】:2016-07-21 04:52:09
【问题描述】:

根据http://www.cocos2d-x.org/wiki/Value

Value 可以处理字符串以及 int、float、bool 等。

当我不得不在使用之间做出选择时,我很困惑

std::string

Value

在什么情况下我应该在 std::string 上使用 Value,反之亦然??

【问题讨论】:

    标签: cocos2d-x cocos2d-x-3.0 cocos2d-x-2.x


    【解决方案1】:

    我认为你误解了Value 对象。如您链接到的文档中所述:

    cocos2d::Value 是许多原语([...] 和 std::string)加上 [...]

    的包装类

    所以真的Value 是一个包装了一堆其他类型变量的对象,它允许cocos2d-x 具有像ValueMap 这样的松散类型结构(字符串的哈希到Values - 其中每个@ 987654325@ 可以是不同类型的对象)和ValueVectorValues 的列表)。

    例如,如果你想要一个配置散列,其键都是字符串,但有一堆不同的值 - 在普通 C++ 中,你必须为你想要的每种类型的值创建一个单独的数据结构保存,但使用 Value 你可以这样做:

    unordered_map<std::string, cocos2d::Value> configuration;
    
    configuration["numEnemies"] = Value(10);
    configuration["gameTitle"]  = Value("Super Mega Raiders");
    

    这只是一种在 C++(一种强类型语言)中创建一些松散类型的机制。

    您可以将字符串保存在 Value 中,如下所示:

    std::string name = "Vidur";
    Value nameVal = Value(name);
    

    然后用以下方法检索它:

    std::string retrievedName = nameVal.asString();
    

    如果您尝试将 Value 解析为错误的类型,它将在运行时引发错误,因为这不是编译器可以解决的问题。

    如果您有任何问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 2016-06-11
      • 2011-07-26
      • 2020-01-04
      • 2013-02-11
      相关资源
      最近更新 更多