Dada la siguiente estructura: struct Vector3D { x: f32, y: f32, z: f32 } Quiero sobrecargar su operador * para hacer un producto Vector3D cuando el lado derecho es un Vector3D , y para hacer una multiplicación de elemento cuando el RHS es un f32 . Mi código se ve así: // Multiplication with scalar […]
Tengo una pregunta sobre el valor de retorno de la sobrecarga del operador en C ++. En general, encontré dos casos, uno es retorno por valor, y uno es retorno por referencia. Entonces, ¿cuál es la regla subyacente de eso? Especialmente en el caso en que puede usar el operador continuamente, como cout<<x<<y . Por […]
Me gustaría agregar un operador a una clase. Actualmente tengo un método GetValue () que me gustaría reemplazar con un operador []. class A { private List values = new List(); public int GetValue(int index) { return values[index]; } }
Mientras jugaba con esta respuesta del usuario GMan , diseñé el siguiente fragmento (comstackdo con Visual C ++ 9): class Class { public: operator void() {} }; Class object; static_cast( object ); (void)object; object.operator void(); después de dar un paso con el depurador descubrí que la conversión a void no invoca Class::operator void() , solo […]
¿Podemos sobrecargar operator++ para preincremento y post incremento? es decir, llamando a los resultados de SampleObject++ y ++SampleObject correctamente. class CSample { public: int m_iValue; // just to directly fetch inside main() CSample() : m_iValue(0) {} CSample(int val) : m_iValue(val) {} // Overloading ++ for Pre-Increment int /*CSample& */ operator++() { // can also adopt […]
Estoy implementando clases vectoriales y necesito obtener un opuesto a algún vector. ¿Es posible definir este método utilizando la sobrecarga del operador? Esto es lo que quiero decir: Vector2f vector1 = -vector2; Esto es lo que quiero que este operador logre: Vector2f& oppositeVector(const Vector2f &_vector) { x = -_vector.getX(); y = -_vector.getY(); return *this; } […]
Supongamos que necesito sobrecargar global ::operator new() para almacenar datos adicionales con cada objeto asignado . Entonces, básicamente, funcionaría de esta manera: para cada llamada a global ::operator new() se tomará el tamaño del objeto pasado y se agregará el tamaño de datos adicionales asignará un bloque de memoria de tamaño deducido en el paso […]
Me gustaría asegurar que mi clase RAII siempre esté asignada en la stack. ¿Cómo evito que se asigne una clase a través del operador ‘nuevo’?
De acuerdo, me han inspirado para hacer algunos golpes en la cabeza . Parece una sobrecarga del operator& lleva a una pequeña cantidad de dolor. ¿Qué casos legítimos existen para sobrecargarlo? (No puedo decir que alguna vez lo haya hecho …)
Hay 4 operadores en C ++ que pueden estar sobrecargados pero no pueden sobrecargarse como funciones independientes (también conocidas como no miembros, independientes). Estos operadores son: operator = operator () operator -> operator [] Este hilo explica perfectamente la razón detrás de prohibir operator = ser una función no miembro. Alguna idea sobre los otros […]