【问题标题】:can c++ macro set class pointer?c++宏可以设置类指针吗?
【发布时间】:2014-02-24 06:18:49
【问题描述】:

我有这种情况 我有我迭代的地图: 整数计数器 = 1;

bool ReelGameObj::setInitWithSpriteFrameName(std::map<std::string,std::string> imageComponentMap)
{
    int counter = 1;
    for (auto keyvalue : imageComponentMap ) {
        std::string pngName = keyvalue.second ;
        SET_SPRITE(counter,pngName);
        counter++;
    }
}

在我的标题中:

 private:


    Sprite* reel_1;
    Sprite* reel_2;
    Sprite* reel_3;
    Sprite* reel_4;
    Sprite* reel_5;

我正在考虑使用 MACRO 动态设置指针以避免 if/else 并做一些更通用但不缺乏的事情 这个宏失败了

#define SET_SPRITE(__NUMBER__,spriteFrameName) this->reel_##__NUMBER__ = Sprite::createWithSpriteFrameName(spriteFrameName);

有没有更好的办法?

【问题讨论】:

  • 你为什么不直接使用Sprite*的数组呢?它将被声明为 Sprite *sprites[5]; 作为旁注,当你不需要副作用时,我喜欢使用 pre-increment(或 decrement)。
  • 连续编号的变量名称通常表明您需要一个数组或向量,尤其是如果您需要通过索引访问它们。
  • 谢谢,只是想确定一下

标签: c++ pointers macros


【解决方案1】:

你不能完全按照你写的那样做,因为counter 需要是一个预处理器常量才能使它工作(即宏)。

当然最好使用数组,例如Sprite* reel[5];,甚至更好的是 std::vector reel;`?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2016-02-06
    • 1970-01-01
    • 2020-10-19
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多