【发布时间】:2016-07-07 08:49:35
【问题描述】:
尝试比较两个 sf::RectangleShape 对象时出现以下错误:
没有运算符“==”与这些操作数匹配。
您可以在以下代码中看到两种类型(snake 和 addsnakey[0])都是 sf::RectangleShape。当我尝试比较两个 sf::RectangleShape 时,为什么会出现编译器错误?
下面是有问题的代码。我在错误所在的地方添加了一条评论:
sf::RectangleShape snake;
//increases size of the snake
sf::RectangleShape addsnake()
{
sf::RectangleShape addsnake1;
addsnake1.setSize(sf::Vector2f(20, 25));
addsnake1.setFillColor(sf::Color::Red);
addsnake1.setPosition(100, 100);
sf::RectangleShape addsnake2;
addsnake2.setSize(sf::Vector2f(20, 30));
addsnake2.setFillColor(sf::Color::Red);
addsnake2.setPosition(100, 100);
sf::RectangleShape addsnake3;
addsnake3.setFillColor(sf::Color::Red);
addsnake3.setSize(sf::Vector2f(20, 35));
addsnake3.setPosition(100, 100);
sf::RectangleShape addsnake4;
addsnake4.setSize(sf::Vector2f(20, 40));
addsnake4.setFillColor(sf::Color::Red);
addsnake4.setPosition(100, 100);
sf::RectangleShape addsnakey[4] = { addsnake1, addsnake2, addsnake3, addsnake4 };
if (snake == snake) //problem here (No operator "==" matches these operands)
return addsnakey[0];
else if (snake == addsnakey[0])
return addsnakey[1];
else if (snake == addsnakey[1])
return addsnakey[2];
else if (snake == addsnakey[2])
return addsnakey[3];
else if (snake == addsnakey[3])
return addsnakey[4];
}
【问题讨论】:
-
反正代码是废话:
if (a == a)snake怎么可能不等于snake? -
您是否希望人们猜测您发布的代码页中的哪一行是导致此编译错误的行?
-
我在它旁边添加了一条评论。里面不远。它在代码的第一个函数中。
-
我 formatted your question 删除了代码中不相关的部分并格式化了代码以使其更有意义;但是,代码存在问题,可能仍然表示反对,即
if (snake == snake)行永远不会是真的(但当snake == addsnakey[0]不工作时可能是测试代码?)并尝试访问addsnakey[4]哪个超出范围。