【问题标题】:error C2228: left of '.x' must have class/struct/union错误 C2228:“.x”左侧必须有类/结构/联合
【发布时间】:2014-01-03 13:58:22
【问题描述】:

我收到了错误,完全不知道为什么!

//create a circle shape.
sf::CircleShape shape;
shape.setRadius(25);
shape.setFillColor(sf::Color(100,250,250));

//circle collision geometry
circle circleTest(shape.getPosition.x,shape.getPosition.y,shape.getRadius())

Circle 是圆碰撞几何的类。它在构造函数上失败

(shape.getPosition.x,shape.getPosition.y,shape.getRadius())

我不知道为什么我得到了错误,它工作正常然后突然给我标题中的错误。

【问题讨论】:

    标签: c++ sfml


    【解决方案1】:

    getPosition 是一个函数。您必须调用它并访问其返回值的成员。

    【讨论】:

    • 是的,一个函数 - 即:缺少括号:shape.getPosition().x 等...(已修复,抱歉)
    • PS - 函数调用的 Parens 依赖于语言,所以很高兴指出这是问题,以防它们用于 SQL/VB 等。
    【解决方案2】:

    您收到此错误的原因是因为 sf::Shape::getPosition() 是一个方法,您需要调用该方法来获取位置。进行该调用后,您可以访问 sf::Shape::getPosition() 返回的 sf::Vector2f 的 .x 和 .y 成员。

    所以你的代码应该是这样的。

    //create a circle shape.
    sf::CircleShape shape;
    shape.setRadius(25);
    shape.setFillColor(sf::Color(100,250,250));
    
    //circle collision geometry
    circle circleTest(shape.getPosition().x,shape.getPosition().y,shape.getRadius())
    

    sf::Shape::getPosition()

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      相关资源
      最近更新 更多