加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在一行上声明多个对象指针会导致编译器错误

发布时间:2020-12-16 05:39:54 所属栏目:百科 来源:网络整理
导读:当我这样做(在我班上) public: Entity() { re_sprite_eyes = new sf::Sprite(); re_sprite_hair = new sf::Sprite(); re_sprite_body = new sf::Sprite(); }private: sf::Sprite* re_sprite_hair; sf::Sprite* re_sprite_body; sf::Sprite* re_sprite_eyes;
当我这样做(在我班上)
public:
    Entity()
    {
        re_sprite_eyes = new sf::Sprite();
        re_sprite_hair = new sf::Sprite();
        re_sprite_body = new sf::Sprite();
    }

private:
    sf::Sprite* re_sprite_hair;
    sf::Sprite* re_sprite_body;
    sf::Sprite* re_sprite_eyes;

一切都很好.但是,如果我将声明更改为:

private:
    sf::Sprite* re_sprite_hair,re_sprite_body,re_sprite_eyes;

我得到这个编译错误:

error: no match for 'operator=' in '((Entity*)this)->Entity::re_sprite_eyes = (operator new(272u),(<statement>,((sf::Sprite*)<anonymous>)))

然后它说re_sprite_eyes的候选人是sf :: Sprite对象和/或引用.

为什么这不行?声明不一样吗?

解决方法

sf :: Sprite * re_sprite_hair,re_sprite_eyes;

不声明3个指针 – 它是一个指针和2个对象.

sf :: Sprite *不幸的是不适用于在它之后声明的所有变量,只是第一个.相当于

sf::Sprite* re_sprite_hair;
sf::Sprite re_sprite_body;
sf::Sprite re_sprite_eyes;

你想做:

sf :: Sprite * re_sprite_hair,* re_sprite_body,* re_sprite_eyes;

你需要为每个变量放一个星.在这种情况下,我更愿意把变星的一面放在变数的一边,而不是把这个明确的事情弄清楚.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读