c++ - Desajustes de const.: 2 sobrecargas no tienen conversión legal para el puntero ''this''
vector this-pointer (1)
Render
se declara con una const
después de los parámetros. Esto significa que no cambia su objeto. Lo que significa que todas las variables miembro del objeto se consideran constantes dentro del Render
, ya que cambiar su estado significa cambiar el objeto contenedor. Asumir que las Shapes
es una variable miembro, y que SetPosition
cambia la forma (es decir, no se declara como const
), no se puede llamar dentro de una función miembro const
.
Entonces, elimine la const
de Render
y estará bien (usted arregla su lógica, en caso de que deba ser constante).
Estoy recibiendo este error extraño:
error C2663: ''sf :: Drawable :: SetPosition'': 2 sobrecargas no tienen conversión legal para el puntero ''this''
Creo que tiene algo que ver con los desajustes const, pero no sé dónde ni por qué. En el siguiente código tengo un vector de formas y sprites, y al intentar acceder a una de las formas de vectores y llamar a una de sus funciones, aparece el error.
std::vector<sf::Shape> Shapes;
std::vector<sf::Sprite> Sprites;
bool AddShape(sf::Shape& S){
Shapes.push_back(S); return true;
};
bool AddSprite(sf::Sprite& S){
Sprites.push_back(S); return true;
};
private:
virtual void Render(sf::RenderTarget& target) const {
for(unsigned short I; I<Shapes.size(); I++){
Shapes[I].SetPosition(
Shapes[I].GetPosition().x + GetPosition().x,
Shapes[I].GetPosition().y + GetPosition().y);
target.Draw(Shapes[I]);
}
for(unsigned short I; I<Sprites.size(); I++){
target.Draw(Sprites[I]);
}
}
¿Cómo puedo arreglar esto?