tengo una clase que se parece aproximadamente así:C++ utilizando 'esto' como parámetro
class MeshClass
{
public:
Anchor getAnchorPoint(x, y)
{
return Anchor(this, x, y);
}
private:
points[x*y];
}
Quiero hacer otra clase que representa un punto de "ancla" que puede obtener acceso a la malla y modificar el punto, como esto:
class Anchor
{
public:
Anchor(&MeshClass, x, y)
moveAnchor(x, y);
}
el problema es cuando trato de hacer el Anchor
en el MeshClass::getAnchorPoint
método, algo así como return Anchor(this, x, y)
sino porque es this
const no puedo. Como una solución alternativa hasta que entienda esto, tengo Anchor aceptando una referencia al punto y moveAnchor mueve el punto directamente.
Editar: Probablemente el problema fue algo estúpido que estaba haciendo al tratar de usar una referencia. Cambié a usar un puntero como lo haría normalmente y puedo pasar this
sin quejas del compilador. Estoy casi seguro de que estaba obteniendo un error relacionado con la const, pero no puedo recrearlo así que debo estar loco.
Hola, para mí el que no se supone que debe compilar ... lo hace? –
Probablemente no (todavía) :) Tenga en cuenta que (al menos en la antigua C simple), si el tipo no se especifica, se establece de manera predeterminada en int, pero arroja una advertencia. –
Publique el código real que desea utilizar y el error que genera. (No es cómo trataste de evitar ese error.) Actualmente es un poco difícil adivinar lo que intentas hacer. –