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; 你需要为每个变量放一个星.在这种情况下,我更愿意把变星的一面放在变数的一边,而不是把这个明确的事情弄清楚. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |